• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      以太網(wǎng)串口服務(wù)模塊的光端機(jī)監(jiān)控系統(tǒng)設(shè)計(jì)

      2018-03-01 00:36:54,,,,,,
      關(guān)鍵詞:光端機(jī)端口號以太網(wǎng)

      ,,,,,,

      (中國電子科技集團(tuán)公司 第三十四研究所,桂林 541004)

      引 言

      圖1 系統(tǒng)架構(gòu)圖

      在雷達(dá)信號地面接收、車載綜合指揮系統(tǒng)等應(yīng)用場合,大多采用了點(diǎn)對點(diǎn)或星型結(jié)構(gòu)的光傳輸系統(tǒng)。在這些應(yīng)用場合下,局端光端機(jī)處于監(jiān)控中心,遠(yuǎn)端光端機(jī)則位于較遠(yuǎn)或較惡劣的環(huán)境。要實(shí)現(xiàn)對整個光傳輸系統(tǒng)的統(tǒng)一管理,一是要實(shí)現(xiàn)遠(yuǎn)控,二是監(jiān)控主機(jī)應(yīng)接入方便,客戶端管理便捷,并且具有分布式管理的能力。

      本文設(shè)計(jì)了以太網(wǎng)串口服務(wù)模塊(簡稱以太網(wǎng)模塊),移植了TCP/IP協(xié)議,它具有多個套接字地址,每一臺被管理的終端設(shè)備分配了一個套接字地址,客戶端進(jìn)程通過套接字地址來與終端設(shè)備建立通信連接,實(shí)現(xiàn)了進(jìn)程對終端設(shè)備的一對一管理。該方案不僅適用于點(diǎn)對點(diǎn)的光傳輸系統(tǒng),也適用于小型星形光傳輸網(wǎng)絡(luò),具有低成本、高效益的特點(diǎn)。

      1 系統(tǒng)方案設(shè)計(jì)

      系統(tǒng)架構(gòu)圖如圖1所示,以點(diǎn)對點(diǎn)光傳輸系統(tǒng)為例,整個系統(tǒng)主要由局端光端機(jī)、遠(yuǎn)端光端機(jī)和監(jiān)控主機(jī)組成。

      在局端光端機(jī)中,以太網(wǎng)模塊實(shí)現(xiàn)了網(wǎng)絡(luò)數(shù)據(jù)包向2個異步串行接口(簡稱串口)的分發(fā)。串口0和局端ARM處理器的串口相連,用來對局端光端機(jī)進(jìn)行狀態(tài)采集和控制;串口1與局端FPGA相連,通過FPGA進(jìn)行復(fù)接,再經(jīng)光電變換、光纖傳輸,最終與遠(yuǎn)端光端機(jī)內(nèi)的ARM處理器的串口相連,用作遠(yuǎn)端光端機(jī)的監(jiān)控接口。FPGA在此過程中實(shí)現(xiàn)了業(yè)務(wù)流和控制流的復(fù)接和分接。

      2 以太網(wǎng)模塊的設(shè)計(jì)

      2.1 硬件設(shè)計(jì)

      以太網(wǎng)模塊要選用的ARM處理器需要移植TCP/IP協(xié)議棧,必須具有較高的工作頻率,同時(shí)內(nèi)部集成10/100M MAC控制器,及容量可觀的RAM和FLASH存儲器。同時(shí),為了方便端口數(shù)量的擴(kuò)展,ARM處理器集成的串口(UART)數(shù)量盡可能多,為了降額設(shè)計(jì),還需滿足低功耗、高性能的特點(diǎn)?;谝陨闲枨?,處理器選用了NXP公司的Cortex-M3架構(gòu)的LPC1768。

      LPC1768采用了新一代Cortex-M3架構(gòu),比傳統(tǒng)的ARM7架構(gòu)減少了邏輯門數(shù)量,提高了工作頻率,降低了功耗。最高工作頻率為100 MHz,集成了512 KB FLASH和64 KB RAM存儲器,以及RMII接口的MAC,且具有4個異步數(shù)據(jù)串行接口UART0~UART3。

      圖2 以太網(wǎng)模塊硬件示意圖

      以太網(wǎng)PHY選用了MICREL公司的KSZ8041NL,它是單芯片10/100M以太網(wǎng)物理層收發(fā)器,支持線序自適應(yīng)和10/100M自協(xié)商功能,和LPC1768之間通過RMII接口相連,連接圖如圖2所示。

      根據(jù)OSI定義的7層TCP/IP參考模型,網(wǎng)際協(xié)議IP實(shí)現(xiàn)了主機(jī)到主機(jī)的通信,傳輸層協(xié)議(TCP/UDP)實(shí)現(xiàn)了進(jìn)程到進(jìn)程的通信。IP地址定義了主機(jī),端口號(port number)定義了進(jìn)程。進(jìn)程是運(yùn)行著的程序的最小單位,同一臺主機(jī)上可同時(shí)運(yùn)行多個相互獨(dú)立的進(jìn)程,它們具有相同的IP地址(本機(jī)的IP地址),擁有不同的端口號。因此,IP地址和端口號的組合稱為套接字地址(Socket地址),通過Socket地址將不同的進(jìn)程區(qū)別開來。本質(zhì)上,進(jìn)程才是數(shù)據(jù)的生產(chǎn)者和消費(fèi)者,當(dāng)主機(jī)收到數(shù)據(jù)報(bào)時(shí),通過檢查數(shù)據(jù)報(bào)的目的端口號尋找與之匹配的進(jìn)程,并將數(shù)據(jù)交給它;當(dāng)進(jìn)程發(fā)送數(shù)據(jù)時(shí),目的端口號和源端口號被插入數(shù)據(jù)報(bào)中,通過網(wǎng)絡(luò)傳輸。設(shè)備收到數(shù)據(jù)報(bào)后,根據(jù)目的端口號進(jìn)行數(shù)據(jù)路由選擇。

      進(jìn)程對設(shè)備的一對一管理如圖3所示,監(jiān)控主機(jī)上運(yùn)行著2個進(jìn)程,進(jìn)程1發(fā)出的數(shù)據(jù)通過UART0(對應(yīng)端口0)轉(zhuǎn)發(fā)出去,由局端光端機(jī)的ARM接收處理;進(jìn)程2發(fā)出的數(shù)據(jù)通過UART1(對應(yīng)端口1)轉(zhuǎn)發(fā)出去,由遠(yuǎn)端光端機(jī)接收處理,反之亦然。這樣就實(shí)現(xiàn)了進(jìn)程和設(shè)備的點(diǎn)對點(diǎn)通信,不同的進(jìn)程管理著不同的設(shè)備,并且獨(dú)立運(yùn)行。

      圖3 進(jìn)程對設(shè)備的一對一管理

      綜上所述,每個端口號對應(yīng)著一個物理的串口(UART),每個串口聯(lián)系著一臺設(shè)備,等同于每臺設(shè)備都有一個Socket地址,通過設(shè)備的Socket地址實(shí)現(xiàn)了進(jìn)程對設(shè)備的一對一管理。在客戶端界面上可通過不同的顯示顏色表示不同的告警事件,如進(jìn)程界面為灰色表示設(shè)備掉線;紅色表示設(shè)備告警;綠色表示設(shè)備工作正常。

      另一方面,進(jìn)程可以運(yùn)行在不同的主機(jī)上,同時(shí)以太網(wǎng)模塊支持多連接,這樣可以實(shí)現(xiàn)分布式管理。

      2.2 軟件設(shè)計(jì)

      2.2.1 以太網(wǎng)驅(qū)動

      LPC1768的MAC和PHY芯片KSZ8041NL分別實(shí)現(xiàn)了數(shù)據(jù)鏈路層和物理層的功能。其中MAC含有一個分散/聚集以太網(wǎng)幀的DMA引擎,它實(shí)現(xiàn)了MAC和片上SRAM之間的數(shù)據(jù)傳輸。DMA引擎利用存儲器中“發(fā)送描述符數(shù)組”和“接收描述符數(shù)組”來管理收發(fā)數(shù)據(jù)。描述符數(shù)組的每一個元素對應(yīng)著一個數(shù)據(jù)緩沖區(qū),多個數(shù)據(jù)緩沖區(qū)形成環(huán)形結(jié)構(gòu),而每一個數(shù)據(jù)緩沖區(qū)可以保存一個完整的以太網(wǎng)幀(Frame)或其中的一個幀片段(Fragment),即一個完整的以太網(wǎng)幀由一個或多個幀片段組成。

      同時(shí),使用生產(chǎn)索引(Produce Index)和消費(fèi)索引(Consume Index)兩個索引寄存器,來記錄幀片段在環(huán)形緩沖結(jié)構(gòu)中的位置,并隨著數(shù)據(jù)的生產(chǎn)和消費(fèi)相應(yīng)地循環(huán)移動。

      接收數(shù)據(jù)時(shí),DMA引擎將MAC收到的幀片段“分散”存放到多個接收緩沖區(qū),并設(shè)置狀態(tài)標(biāo)志位,供上層服務(wù)使用;發(fā)送數(shù)據(jù)時(shí),DMA引擎將多個發(fā)送緩沖區(qū)的幀片段按順序“集中”起來發(fā)送出去,并設(shè)置狀態(tài)標(biāo)志位,供上層服務(wù)使用。

      完整的以太網(wǎng)驅(qū)動的初始化包含如下過程:

      ① LPC1768的以太網(wǎng)模塊時(shí)鐘和引腳使能;

      ② 初始化MAC地址、背對背、包間隙、最大幀長、沖突/重發(fā)窗口等控制寄存器;

      ③ 初始化PHY芯片;

      ④ 初始化發(fā)送描述符數(shù)組和接收描述符數(shù)組;

      ⑤ 使能接收完成(Rx Done)和發(fā)送完成(Tx Done)中斷;

      ⑥ 啟動發(fā)送和接收功能。

      2.2.2 TCP/IP協(xié)議棧移植

      TCP/IP協(xié)議棧的實(shí)現(xiàn)必須基于嵌入式實(shí)時(shí)操作系統(tǒng)。本方案采用了RL-RTX實(shí)時(shí)操作系統(tǒng),它由ARM公司開發(fā),是一款功能強(qiáng)大的嵌入式實(shí)時(shí)操作系統(tǒng),適用于ARM7、ARM9、以及Cortex-M架構(gòu)的微處理器,具有如下特點(diǎn):

      ① 支持時(shí)間片、搶占式和合作式調(diào)度;

      ② 低中斷延遲,對應(yīng)Cortex-M3/M4內(nèi)核可以實(shí)現(xiàn)零中斷延遲;

      ③ 具有254級任務(wù)優(yōu)先級;

      ④ 支持庫移植方式,移植方便;

      ⑤ 基于對話框的配置向?qū)?,裁剪方便?/p>

      具體移植時(shí),選擇庫移植方式,在“目標(biāo)選項(xiàng)”標(biāo)簽頁的操作系統(tǒng)下拉列表中選擇“RTX Kernel”;然后,添加RTX系統(tǒng)的配置文件RTX_Conf_CM.c到工程中,通過配置向?qū)θ蝿?wù)數(shù)量、默認(rèn)堆棧大小、主頻和tick值進(jìn)行設(shè)置,完成操作系統(tǒng)的裁剪。

      RL-RTX實(shí)時(shí)操作系統(tǒng)同時(shí)提供了眾多的中間件,其中TCP/IP協(xié)議的中間件為RL-TCPnet,它具有RAM空間,花費(fèi)少,同時(shí)目標(biāo)代碼緊湊,特別適合于資源有限的嵌入式操作系統(tǒng),并針對ARM7、ARM9、以及Cortex-M架構(gòu)的微處理器進(jìn)行了優(yōu)化。

      移植RL-TCPnet時(shí),需要對三個文件重點(diǎn)關(guān)注:TCP_CM3.lib是實(shí)現(xiàn)RL-TCPnet的庫文件,需要將其添加到工程中;Net_Config.c是配置文件,可通過配置向?qū)瓿蓪P地址、MAC地址等參數(shù)的設(shè)置;rtl.h包含了RL-TCPnet的庫文件的函數(shù)原型,使用時(shí)必須引用它。

      RL-TCPnet作為中間件,提供了與驅(qū)動層和應(yīng)用層的數(shù)據(jù)傳輸接口。在系統(tǒng)初始化時(shí),調(diào)用init_TcpNet()函數(shù)來初始化RL-TCPnet,該函數(shù)調(diào)用了以太網(wǎng)驅(qū)動層的相關(guān)函數(shù),完成了對MAC和PHY的初始化;同時(shí)建立了RL-TCPnet的運(yùn)行環(huán)境。

      當(dāng)OS啟動之后,需要2個優(yōu)先級固定的系統(tǒng)任務(wù)支撐RL-TCPnet的運(yùn)行。任務(wù)tick_timer()用來為RL-TCPnet提供節(jié)拍,以周期性地喚醒RL-TCPnet主線程main_TcpNet();任務(wù)tcp_poll()調(diào)用RL-TCPnet主線程main_TcpNet(),它使用標(biāo)準(zhǔn)的Socket API向應(yīng)用層提供數(shù)據(jù)收發(fā)服務(wù)。

      本方案中使用UDP協(xié)議來進(jìn)行應(yīng)用開發(fā),RL-TCPnet主線程main_TcpNet()監(jiān)聽網(wǎng)絡(luò)上的UDP數(shù)據(jù)包,無論何時(shí),只要收到UDP數(shù)據(jù)包,就會調(diào)用回調(diào)函數(shù)udp_callback(),通過消息郵箱的通信機(jī)制通知應(yīng)用層任務(wù)接收數(shù)據(jù)包。

      數(shù)據(jù)包中不僅含有凈荷,還含有源端口號和目的端口號,供應(yīng)用層進(jìn)行路由處理;發(fā)送UDP數(shù)據(jù)包時(shí),應(yīng)用層將待發(fā)送的數(shù)據(jù)正文準(zhǔn)備好,調(diào)用UDP Socket Send API函數(shù)的同時(shí)將目標(biāo)IP地址、目的端口號、源端口號等參數(shù)傳遞給它,main_TcpNet()將自動組成UDP數(shù)據(jù)包并交由驅(qū)動層發(fā)送出去。

      2.2.3 數(shù)據(jù)包路由選擇

      每一個串口的端口號存儲在存儲器中,當(dāng)收到UDP數(shù)據(jù)包時(shí),將數(shù)據(jù)包中的目的端口號與各個串口的端口號逐一比對,若有匹配的,則將凈荷向相應(yīng)的串口轉(zhuǎn)發(fā);若匹配不中,則將該UDP數(shù)據(jù)包丟棄。

      同時(shí),為每一個串口分配512字節(jié)的接收緩沖區(qū),任務(wù)循環(huán)檢查各個緩沖區(qū)是否為空,一旦某個串口收到字節(jié),在將其放入對應(yīng)的緩沖區(qū)的同時(shí)啟動超時(shí)計(jì)時(shí),超時(shí)時(shí)間一般為當(dāng)前波特率下接收5個字符的時(shí)間,當(dāng)下一個到來的字符沒有超時(shí)時(shí),超時(shí)計(jì)數(shù)器被清零;當(dāng)發(fā)生超時(shí)時(shí),則表示完整地收到了一幀數(shù)據(jù),為該幀數(shù)據(jù)插上源端口號,目的端口號等幀頭信息交由UDP Socket Send API函數(shù)進(jìn)行轉(zhuǎn)發(fā),完成串口到網(wǎng)口的數(shù)據(jù)傳輸。

      3 測試與驗(yàn)證

      如圖4所示,使用TCP&DUP測試工具在監(jiān)控主機(jī)上建立了2個UDP客戶端,目標(biāo)IP均為10.35.217.168,客戶端1通過端口號23訪問局端光端機(jī),客戶端2通過端口號26訪問遠(yuǎn)端光端機(jī),數(shù)據(jù)通信正常,2個客戶端獨(dú)立工作,分別實(shí)現(xiàn)對局端光端機(jī)和遠(yuǎn)端光端機(jī)的監(jiān)控。

      圖4 UDP多進(jìn)程測試

      結(jié) 語

      [1] 王國法,劉薇,段明瑋.基于嵌入式系統(tǒng)的以太網(wǎng)通信開發(fā)[J].光通信技術(shù),2012,36(4):36-38.

      [2] Behrouz A.Forouzan.TCP/IP協(xié)議族 [M].3版.北京:清華大學(xué)出版社,2009.

      郭文龍(工程師),主要從事光通信研發(fā)工作。

      猜你喜歡
      光端機(jī)端口號以太網(wǎng)
      基于1500以太網(wǎng)養(yǎng)豬場的智能飼喂控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
      在Docker容器中安裝應(yīng)用程序
      淺談野戰(zhàn)光端機(jī)應(yīng)用及改進(jìn)意見
      新生代(2018年20期)2018-11-13 21:01:21
      淺談以java為基礎(chǔ)的Socket通信簡介及實(shí)現(xiàn)
      青春歲月(2017年5期)2017-04-20 18:34:23
      談實(shí)時(shí)以太網(wǎng)EtherCAT技術(shù)在變電站自動化中的應(yīng)用
      電子制作(2017年24期)2017-02-02 07:14:44
      光端機(jī)的創(chuàng)新發(fā)展與應(yīng)用
      一種90W高功率以太網(wǎng)供電系統(tǒng)的設(shè)計(jì)
      淺談EPON與工業(yè)以太網(wǎng)在貴遵高速公路中的應(yīng)用
      Winsock編程在《計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)》教學(xué)中的應(yīng)用
      基于Android系統(tǒng)的互動展示APP的研究與設(shè)計(jì)
      灌南县| 湾仔区| 广汉市| 桦甸市| 武义县| 凤凰县| 伊宁市| 临猗县| 金山区| 浠水县| 望城县| 长岛县| 临沂市| 新宁县| 陆川县| 淄博市| 盱眙县| 固镇县| 东海县| 商南县| 蒙山县| 宁津县| 民权县| 和林格尔县| 平湖市| 清河县| 察雅县| 上饶市| 张家界市| 廊坊市| 揭东县| 曲周县| 绵竹市| 孟连| 金川县| 舟山市| 隆安县| 宣威市| 溧阳市| 彭州市| 嘉义县|