• 
    

    
    

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

      ?

      基于MODBUS TCP協(xié)議的船用以太網(wǎng)通信系統(tǒng)設(shè)計

      2018-04-23 03:53:44楊明超
      船電技術(shù) 2018年3期
      關(guān)鍵詞:客戶機(jī)船用服務(wù)器端

      鄭 軼,楊明超

      (武漢船用電力推進(jìn)裝置研究所,武漢 430064)

      0 引言

      隨著艦船設(shè)備的不斷更新?lián)Q代,對艦船的操作與控制也在逐步向集中式的方向靠攏。艇員依靠集中控制室的計算機(jī)便可觀測艦船各設(shè)備的狀態(tài),并可通過計算機(jī)向各設(shè)備發(fā)送指令。艦船設(shè)備的狀態(tài)參數(shù)的獲取與指令的發(fā)送,需要船用通信系統(tǒng)的良好支持。目前應(yīng)用于艦船的通信方式主要包括CAN通信及以太網(wǎng)通信,其中,以太網(wǎng)通信速率較快,數(shù)據(jù)傳輸穩(wěn)定,不易受到外部干擾,適合大量數(shù)據(jù)參數(shù)的循環(huán)上傳。

      1 概述

      1.1 MODBUS協(xié)議概述

      MODBUS協(xié)議由Modicon在1979年發(fā)明,是OSI模型第7層上的應(yīng)用層報文傳輸協(xié)議,它定義了一個與基礎(chǔ)通信層無關(guān)的協(xié)議數(shù)據(jù)單元(PDU),即PDU=MODBUS功能碼+數(shù)據(jù)域。在某些特定總線或網(wǎng)絡(luò)上,MODBUS協(xié)議能夠映射在應(yīng)用數(shù)據(jù)單元(ADU)上,即ADU=地址域+PDU+校驗碼,其通用幀格式如圖1所示。

      圖1 MODBUS通用幀格式

      目前MODBUS協(xié)議主要應(yīng)用于以太網(wǎng)通信(MODBUS TCP)、串口通信(MODBUS RTU)及高速令牌傳遞網(wǎng)絡(luò)(MODBUS PLUS)。在不同類別的網(wǎng)絡(luò)中,對ADU的封裝也存在差異,以MODBUS TCP/IP為例,其ADU的組成如圖2所示。

      圖2 MODBUSTCP/IP幀格式

      可以看出,在MODBUS TCP協(xié)議中,ADU=MBAP+PDU。MBAP是TCP/IP協(xié)議上使用的一種專用報文頭,用以識別ADU。MBAP報文頭由7個字節(jié)組成,其格式如下表1所示。

      表1 MBAP報文頭組成

      從表格中可以看到,由于MBAP中含有長度信息,接收者能夠清晰的識別報文的邊界,因此在MODBUS TCP協(xié)議中,其ADU不再含有校驗碼。

      1.2 MODBUS TCP通信系統(tǒng)模型

      MODBUS TCP通信系統(tǒng)模型一般基于客戶機(jī)/服務(wù)器模型搭建,如圖3所示。

      圖3 MODBUS TCP通信系統(tǒng)客戶機(jī)/服務(wù)器模型

      客戶機(jī)/服務(wù)器模型基于4種類型的報文:請求、指示、響應(yīng)和證實(shí)??蛻魴C(jī)向服務(wù)器發(fā)送請求指令(MODBUS請求),服務(wù)器接收到來自客戶機(jī)的指令(MODBUS指示)后,對該指令進(jìn)行響應(yīng)(MODBUS響應(yīng)),即按照約定的協(xié)議內(nèi)容向客戶機(jī)發(fā)送數(shù)據(jù),并由客戶機(jī)對發(fā)送的數(shù)據(jù)進(jìn)行辨識和處理(MODBUS證實(shí))。

      MODBUS TCP通信系統(tǒng)可以包括多個MODBUS客戶機(jī)和服務(wù)器,其他互聯(lián)設(shè)備也可通過客戶機(jī)或服務(wù)器TCP/IP網(wǎng)關(guān)接入該通信系統(tǒng),如圖4所示。

      圖4 MODBUS TCP通信系統(tǒng)示意圖

      1.3 船用以太網(wǎng)通信系統(tǒng)

      目前廣泛使用的船用以太網(wǎng)通信系統(tǒng)多采用“一主多從”的構(gòu)建思路,即由集中控制室的計算機(jī)擔(dān)任主機(jī),依次向各設(shè)備輪詢數(shù)據(jù),如圖5所示。

      圖5 船用以太網(wǎng)通信系統(tǒng)結(jié)構(gòu)示意圖

      采用集中式輪詢方式的好處在于可以分時段向各設(shè)備發(fā)送數(shù)據(jù)請求,一來可以有效利用集控室計算機(jī)的系統(tǒng)資源,二來可以避免各設(shè)備同時返回數(shù)據(jù)造成通信線路堵塞。

      2 設(shè)計實(shí)現(xiàn)

      2.1 船用MODBUS TCP通信系統(tǒng)總體框圖

      圖6 船用MODBUS TCP通信系統(tǒng)結(jié)構(gòu)

      結(jié)合圖3、圖4和圖5可以看出,船用以太網(wǎng)通信系統(tǒng)可以按照MODBUS TCP通信系統(tǒng)結(jié)構(gòu)進(jìn)行搭建,如圖6所示。

      將集控室計算機(jī)作為客戶機(jī),各設(shè)備作為服務(wù)器,由集控室計算機(jī)向各設(shè)備發(fā)送輪詢請求,并接收返回數(shù)據(jù)。以客戶機(jī)與其中一臺服務(wù)器為例,其信息交換示意圖如圖7所示。

      圖中,socket()函數(shù)用于創(chuàng)建套接字,bind()函數(shù)用來綁定一個端口號到該套接字,并在套接字與所指定的端口號之間建立一個連接。socket初始化完成后,服務(wù)器端需要使用listen()函數(shù)將狀態(tài)置為偵聽,才能夠接收到來自客戶機(jī)的連接請求。此時,若客戶機(jī)需要與服務(wù)器進(jìn)行數(shù)據(jù)交換,則需要使用connect()函數(shù)來指定套接字號、服務(wù)器IP地址和端口號,服務(wù)器在接收到客戶機(jī)的連接請求后,需要使用accept()函數(shù)指定之前在listen()函數(shù)中所指定的套接字號,用以確定當(dāng)前訪問的客戶機(jī)。在連接完成后,客戶機(jī)可以使用send()函數(shù)向服務(wù)器發(fā)送MODBUS請求,服務(wù)器需要使用recv()函數(shù)進(jìn)行接收,再使用send()函數(shù)向客戶機(jī)發(fā)送MODBUS響應(yīng)。值得注意的是,客戶機(jī)在發(fā)送一個MODBUS請求后,無需等待服務(wù)器端的響應(yīng)便可以繼續(xù)發(fā)送下一個MODBUS請求。

      圖7 MODBUS TCP通信系統(tǒng)信息交換示意圖

      2.2 MODBUS服務(wù)器端建立

      MODBUS服務(wù)器端的主要處理流程如圖8所示。

      程序在初始化完成后即進(jìn)入等待,在接收到來自客戶機(jī)的請求PDU后,對該P(yáng)DU進(jìn)行檢驗,根據(jù)檢驗情況決定生成MODBUS應(yīng)答或是MODBUS異常,并將該應(yīng)答或者異常作為響應(yīng)發(fā)送給客戶機(jī),其詳細(xì)設(shè)計分述如下:

      圖8 MODBUS服務(wù)器端信息處理流程圖

      1)初始化

      與其他基于TCP/IP協(xié)議的設(shè)備類似,作為服務(wù)器端程序,MODBUS服務(wù)器端首先需要進(jìn)行初始化,其核心內(nèi)容是設(shè)置并綁定自身IP。建立服務(wù)器函數(shù)CreateServer()的核心代碼如下:

      接下來需要將服務(wù)器置于偵聽狀態(tài)。MODBUS服務(wù)器端應(yīng)支持多個并發(fā)的客戶機(jī)同時連接。在設(shè)計時,采用多線程策略可以實(shí)現(xiàn)該項功能,即每當(dāng)偵聽到新的連接請求時,便建立一個新的線程來進(jìn)行操作。偵聽函數(shù)TcpListen()的核心代碼如下:

      2)生成MODBUS應(yīng)答/異常

      對于并發(fā)的連接,在接收到來自客戶機(jī)的請求時,服務(wù)器端將在對應(yīng)的線程內(nèi)對請求進(jìn)行處理。根據(jù)MODBUS協(xié)議的MBAP報文頭判斷請求類別,再按照約定的協(xié)議內(nèi)容向客戶機(jī)返回數(shù)據(jù)。響應(yīng)函數(shù)ClientService()的核心代碼如下:

      2.3 MODBUS客戶端建立

      MODBUS客戶端的主要處理流程如圖9所示。

      圖9 MODBUS客戶端信息處理流程圖

      程序在初始化完成后即進(jìn)入等待,根據(jù)需求發(fā)送請求PDU,同時監(jiān)測是否收到響應(yīng)PDU,根據(jù)檢驗情況決定生成MODBUS肯定證實(shí)或是MODBUS否定證實(shí),并將該證實(shí)發(fā)送給用戶應(yīng)用,其詳細(xì)設(shè)計分述如下:

      1)初始化

      MODBUS客戶端初始化的主要內(nèi)容是建立客戶機(jī)與服務(wù)器端的連接。使用Socket類中的Connect函數(shù)可以完成這一目標(biāo)。連接函數(shù)TcpConnect()的核心代碼如下:

      2)發(fā)送MODBUS請求

      可采用多種策略發(fā)送MODBUS請求,最為常用的是使用timer定時器作為觸發(fā),定時發(fā)送。發(fā)送函數(shù)timersend_Tick()的核心代碼如下:

      3)處理數(shù)據(jù)并生成肯定/否定證實(shí)

      與服務(wù)器端的處理方式類似,接收函數(shù)根據(jù)MODBUS協(xié)議的MBAP報文頭判斷數(shù)據(jù)類別,再按照約定的協(xié)議內(nèi)容解析數(shù)據(jù)。接收函數(shù)ReceiveMsg()的核心代碼如下:

      3 通信測試

      3.1 MODBUS服務(wù)器端測試

      根據(jù)第二章的內(nèi)容,采用C#編寫MODBUS服務(wù)器端測試程序,使用0x03功能碼進(jìn)行測試,起始地址為40101,大端模式。其主界面如圖10所示。

      測試時使用TCP/UDP調(diào)試工具模擬MODBUS客戶端。運(yùn)行MODBUS服務(wù)器端測試程序,單擊程序中的“開啟服務(wù)器”按鈕,并在TCP/UDP調(diào)試工具中設(shè)置本機(jī)IP為192.168.163.1,端口為9000,連接類型為TCP,單擊“連接”按鈕。此時調(diào)試工具已與本機(jī)連接。按照MODBUS協(xié)議,其MODBUS請求格式及數(shù)值如表2所示。

      圖10 MODBUS服務(wù)器端測試程序

      單擊TCP/UDP調(diào)試工具中“發(fā)送”按鈕,可在接收欄中看到數(shù)據(jù)序列如圖11所示。

      將該數(shù)據(jù)序列進(jìn)行解析,如表3所示。

      可見調(diào)試工具接收到的報文信息完整、正確,通信正常。

      表2 MODBUS請求格式及數(shù)值

      3.2 MODBUS客戶端測試

      根據(jù)第二章的內(nèi)容,采用C#編寫MODBUS客戶端測試程序,使用0x03功能碼進(jìn)行測試,起始地址為40101,大端模式,采用定時器觸發(fā)方式向服務(wù)器發(fā)送MODBUS請求。使用Modbus Slave調(diào)試工具模擬MODBUS服務(wù)器端,設(shè)置如圖12所示。

      圖11 TCP/UDP調(diào)試工具結(jié)果

      表3 調(diào)試結(jié)果解析

      圖12 Modbus Slave調(diào)試工具設(shè)置

      運(yùn)行MODBUS客戶端測試程序,單擊“連接服務(wù)器”按鈕,得到的結(jié)果如圖13所示。

      圖13 MODBUS客戶端測試程序結(jié)果

      對比圖12和圖13可以看出,客戶端收到服務(wù)器端數(shù)據(jù),且數(shù)據(jù)完整、正確,通信正常。

      4 小結(jié)

      本文結(jié)合MODBUS TCP通信系統(tǒng)與船用以太網(wǎng)通信系統(tǒng)的結(jié)構(gòu)特征,設(shè)計了基于MODBUS TCP協(xié)議的船用以太網(wǎng)通信系統(tǒng),采用C#開發(fā)環(huán)境對通信系統(tǒng)的服務(wù)器端和客戶端進(jìn)行了編程設(shè)計并進(jìn)行了通信測試。測試結(jié)果表明,該編程設(shè)計正確,能夠有效進(jìn)行數(shù)據(jù)交互。

      參考文獻(xiàn):

      [1] 張小川.Modbus設(shè)備嵌入式網(wǎng)頁控制方法的研究與實(shí)現(xiàn)[J].科技風(fēng),2014,(20):26-27.

      [2] 黃波.虛擬儀器技術(shù)在電力諧波分析系統(tǒng)中的應(yīng)用[D].華中科技大學(xué),2014.

      [3] 史妍.基于Modbus的人防工程能源監(jiān)控系統(tǒng)研究[D].哈爾濱工業(yè)大學(xué),2012.

      [4] 張芳.網(wǎng)絡(luò)控制系統(tǒng)時延分析、控制器設(shè)計及仿真研究[D].北京交通大學(xué),2007.

      [5] 郝曉弘,祖守圓,徐維濤.基于VC的Modbus/TCP協(xié)議模型通信測試軟件的實(shí)現(xiàn)[J].微計算機(jī)信息,2006,(07):64-67.

      猜你喜歡
      客戶機(jī)船用服務(wù)器端
      Reducing the global cancer burden with gastrointestinal screening: China’s 30 years practice
      船用PVC夾芯板在近場水下爆炸作用下的吸能特性
      山鋼拿下船用9Ni鋼訂單
      山東冶金(2022年1期)2022-04-19 13:40:40
      船用柴油機(jī)應(yīng)用前景展望
      淺析異步通信層的架構(gòu)在ASP.NET 程序中的應(yīng)用
      成功(2018年10期)2018-03-26 02:56:14
      我國第一臺2205千瓦船用低速柴油機(jī)
      蘭臺世界(2017年9期)2017-06-01 12:20:02
      在Windows中安裝OpenVPN
      網(wǎng)頁防篡改中分布式文件同步復(fù)制系統(tǒng)
      瘦客戶機(jī):安全與便捷的選擇
      基于Web數(shù)據(jù)提高訪問速度的方法
      什邡市| 临洮县| 朝阳区| 福建省| 赤峰市| 安西县| 辰溪县| 桐城市| 榆社县| 扎鲁特旗| 易门县| 永吉县| 长宁县| 交口县| 双桥区| 镇江市| 礼泉县| 吴桥县| 景德镇市| 广南县| 敦化市| 申扎县| 桃源县| 乌鲁木齐市| 大方县| 车致| 土默特右旗| 社旗县| 剑川县| 靖远县| 西盟| 清苑县| 通化市| 婺源县| 崇义县| 巴东县| 金沙县| 邮箱| 岳西县| 丹东市| 乌拉特前旗|