1. 程式人生 > >基於tcp/ip協議的ModBus

基於tcp/ip協議的ModBus

一 乙太網的標準

  乙太網是一種區域網。早期標準為IEEE 802.3,資料鏈路層使用CSMA/CD,10Mb/s速度物理層有:

(1)10 Base 5粗同軸電纜,RG-8,一段最長為500m;

(2)10 Base 2細同軸電纜,RG-58,一段最長為185m;

(3)10 Base T雙絞線,UTP或STP,一段最長為100m。

  快速乙太網為100Mb/s,標準為802.3a,介質為100 Base Tx雙絞線、100 Base Fx光纖。

  目前10/100M乙太網使用最為普遍,很多企事業使用者已實現100M到乙太網桌面,確實體驗到高速“衝浪”的快感,另外從距離而言,非遮蔽雙絞線(UTP)為100m,多模光纖可達2~3km,單模光纖可大於100km。千兆乙太網1000Mb/s為802.3z/802.3ab,萬兆乙太網10Gb/s為802.3ae,將為新一輪乙太網的發展帶來新的機遇與衝擊。

二 工業乙太網與商用乙太網的區別

  什麼是工業乙太網?技術上,它與IEEE802.3相容,故從邏輯上可把商用網和工業網看成是一個乙太網,而使用者可根據現場情況,靈活裝配自己的網路部件,但從工業環境的惡劣和抗干擾的要求,設計者希望採用市場上可找到的乙太網晶片和媒介,兼顧考慮下述工業現場的特殊要求:首先要考慮高溫、潮溼、振動;二是對工業抗電磁干擾和抗輻射有一定要求,如滿足EN50081-2、EN50082-2標準,而辦公室級別的產品未經這些工業標準測試,表1列出了一些常用工業標準。為改善抗干擾性和降低輻射,工業乙太網產品多使用多層線路板或雙面電路板,且外殼採用金屬如鑄鋁遮蔽干擾;三是電源要求,因集線器、交換機、收發器多為有源部件,而現場電源的品質又較差,故常採用雙路直流電或交流電為其供電,另外考慮方便安裝,工業乙太網產品多數使用DIN導軌或面板安裝;四是通訊介質選擇,在辦公室環境下多數配線使用UTP,而在工業環境下推薦使用者使用STP(帶遮蔽雙絞線)和光纖。

  

三 TCP/IP

1. 為什麼使用TCP/IP?

  最主要的一個原因在於它能使用在多種物理網路技術上,包括區域網和廣域網技術。TCP/IP協議的成功很大程度上取決於它能適應幾乎所有底層通訊技術。

    20世紀80年代初,先在X.25上執行TCP/IP協議;而後又在一個撥號語音網路(如電話系統)上使用TCP/IP協議,又有TCP/IP在令牌環網上執行成功;最後又實現了TCP/IP遠端分組無線網點與其他Internet網點間TCP/IP通訊。所以TCP/IP協議極其靈活,具備連線不同網路的能力。

  另外,使用TCP/IP也簡化了OSI模型,因為它省略了表示層和會話層。如果現在把乙太網的物理層和資料鏈路層加到OSI模型就構成了基於乙太網的TCP/IP網,如圖1所示。用乙太網實現TCP/IP也是經濟的一種方式。

  

2. Internet Protocol(IP)

  IP是Internet最基本的協議,使用者可從www.ietf.org下載RFC79來得到其檔案,(要求評論RFC: Request For Comments:一系列備忘錄的名稱,包括概述、評價、意見、技術和研究,以及所提出的和被接受的網際網路標準)。

  IP層主要目的是找到IP報文的“下一個連線點”,它可以是路由器、計算機、控制器甚至I/O,關鍵該裝置須有自己的IP地址。凡在網路層使用IP協議的網路,都通過IP地址定址,所以使用時首先要進行復雜的設定,每個節點至少需一個“IP地址”、一個“子網掩碼”、一個“預設網點”和一個“主機名”,如此複雜的設定,對於一些初識網路的使用者來說的確帶來不便,不過隨著對網路熟悉,有許多IP地址配置工具,可方便進行IP設定,甚至是自動設定。

  IP是面向報文的協議,它獨立處理每個報文包,每個報文包必須含有完整的定址資訊。IP報文包的格式如圖2所示。

  

  IP地址的型別共有4種(如圖3所示):A類用於處理超大型網路,最多16387064個主機(1~126);B類網路最多可有64516個主機(網路地址的第一段為128~191);C類用於小型網路,最多可有254個主機(網路地址的第一段為192~223);D類用於多點播送,用於多目的資訊的傳輸。全零(“0.0.0.0”)地址對應於當前主機,全1地址(“255.255.255.255”)是當前子網的廣播地址。

  

3. Transmission Control Protocol (TCP)

  TCP是基於傳輸層的協議(如圖4所示),協議檔案可從RFC793得到,使用廣泛,面向連線的可靠協議。它能把報文分解為數段,在目的站再重新裝配這些段,支援重新發送未被收到的段,提供兩臺裝置間的全雙工連線,允許它們高效地交換大量資料。TCP使用滑動視窗協議來高效使用網路。由於TCP很少干預底層投遞系統的工作,它適應各種投遞系統;且提供流量控制,能使各種不同速率的系統進行通訊。報文段是TCP所使用的基本傳輸單元,用於傳輸資料或控制資訊。

  

4. TCP埠

  TCP是使用埠(Socket)號把資訊傳到上層,為使用者提供不同服務,埠號跟蹤同一時間內通過網路的不同會話。RFC1700中定義了眾所周知的特殊埠號,常用埠如表2所列。其中502埠是自動化公司唯一所擁有的埠號碼。

  

5. 協議(Protocal)的功能

  組建網路時,必須選擇一種網路通訊協議,使得使用者之間能相互進行“交流”。協議是網路裝置用來通訊的一套規則,可理解為一種彼此都能聽懂的公用語言。如在網路層使用IP協議,在傳輸層使用TCP協議,就構成了目前常用的TCP/IP協議,現在幾乎所有廠商和作業系統都支援它。同時,TCP/IP也是Internet的基礎協議。

如在應用層使用工業上事實標準的Modbus協議(如圖5所示),就構成了完整工業乙太網應用。

四 開放和標準的Modbus TCP

  Modbus是開放協議,IANA(Internet Assigned Numbers Authority, 網際網路編號分配管理機構)給Modbus協議賦予TCP埠502,Modbus協議可免費從www.Modbus.org得到。

  Modbus是標準協議,它已提交給IETF(Internet Engineering Task Force, 網際網路工程任務部),將成為Internet標準。因自1978年,工業自動化行業已安裝了百萬計串列埠Modbus裝置和十萬計Modbus TCP/IP裝置,擁有超過300個Modbus相容裝置廠商,還有90%的第三廠家I/O支援Modbus TCP/IP,所以是使用廣泛的事實標準。Modbus的普及得益於使用門坎很低,無論用串列埠還是用乙太網,硬體成本低廉,Modbus和Modbus TCP都可以免費得到,不需交任何費用,且在網上有很多免費資源,如C/C++、JAVA樣板程式、ActiveX控制元件、各種測試工具等,所以使用者使用很方便。另外,幾乎可找到任何現場匯流排到Modbus TCP的網點,方便使用者實現各種網路之間的互聯。

1. Modbus TCP/IP

  如果使用TCP/IP乙太網的5層:

    第一層:物理層,提供裝置的物理介面,與市售的介質/網路介面卡相相容;

    第二層:資料鏈路層,格式化訊號到源/目的硬體地址的資料幀;

    第三層:網路層,實現帶有32位IP地址的IP報文包;

    第四層:傳輸層,實現可靠性連線、傳輸、查錯、重發、埠服務、傳輸排程;

    第五層:應用層,Modbus協議報文。

2. Modbus TCP資料幀

  在TCP/IP乙太網上傳輸,支援Ethernet II和802.3兩種幀格式。圖6所示,Modbus TCP資料幀包含報文頭、功能程式碼和資料3部分。

  

    MBAP報文頭(MBAP、Modbus Application Protocol、Modbus應用協議)分4個域,共7個位元組,如表3所示。

    

3. Modbus功能程式碼

  共有3種類型分別為:

    (1)公共功能程式碼(如表4所示):已定義好的功能碼,保證其唯一性,由Modbus.org認可;

    (2)使用者自定義功能程式碼有兩組,分別為65~72和100~110,無需認可,但不保證程式碼使用的  唯一性。如變為公共程式碼,需交RFC認可;(3)保留的功能程式碼,由某些公司使用在某些傳統裝置的程式碼,不可作為公共用途。

    

  功能程式碼劃分:按應用深淺,可分為3個類別。

  1. 類別0,對於客戶機/伺服器最小的可用子集:讀多個保持暫存器(fc.3);寫多個保持暫存器(fc.16)。

  2. 類別1,可實現基本互易操作的常用程式碼:讀線圈(fc.1);讀開關量輸入(fc.2);讀輸入暫存器(fc.4);寫線圈(fc.5);寫單一暫存器(fc.6)。

  3. 類別2,用於人機介面、監控系統的例行操作和資料傳送功能:

  4. 強制多個線圈(fc.15);讀通用暫存器(fc.20);寫通用暫存器(fc.21);遮蔽寫暫存器(fc.22);讀寫暫存器(fc.23)。

4. Modbus應用舉例

  1. 讀暫存器(見表5)。

  2. Modbus TCP請求報文舉例(見表6)。

  3. Modbus TCP客戶端的實況。

    用Connect()命令建立目標裝置TCP 502埠的連線資料通訊的過程:

    1. 準備Modbus報文,包括7個位元組的MBAP在內的請求;

    2. 使用send()命令傳送;

    3. 在同一連線等待應答;

    4. 同recv()讀報文,完成一次資料交換過程。
      當通訊任務結束時,關閉TCP連線,使伺服器可以為其他服務。

  4. Modbus TCP的樣板程式

    使用者可通過網站www.transparent-factory.com下載到:

    1. JAVA的應用程式;

    2. 基於Unix系統下,C的應用程式;

    3. 基於Win32系統下,C的應用程式。

  5. Modbus TCP協議

    協議文字的英文版可從www. modbus.org下載,如需協議文字的中文版,可向施耐德電氣(中國)投資有限公司各地區辦事處索要。

五 使用TCP/IP Modbus的原因

  1. TCP/IP已成為資訊行業的事實標準:世界上93%的網路都使用TCP/IP,只要在應用層使用Modbus TCP,就可實現工業乙太網資料交換;

  2. 易於與各種系統互連:可用於管理網、實時監控網及現場裝置通訊;

  1. 網路實施價格低廉:可全部使用通用網路部件;

  2. 使用者強烈要求:目前中國已把Modbus TCP作為工業網路標準之一,使用者可免費獲得協議及樣板程式,可在Unix、Linux、Windows下執行,不需要專門驅動程式。在國外,Modbus TCP被國際半導體業SEMI定為網路標準,國際水處理、電力系統也把它作為應用的事實標準,還有越來越多行業作為標準來用;

  1. 高速的資料:使用者最關心的是所使用網路的傳輸能力,100M乙太網的傳輸結果為:每秒4000個Modbus TCP報文,而每個報文可傳輸125個字(16bit),故相當於4000×125=500000個模擬量資料(8000000開關量!);

  1. 廠家能提供完整解決方案:工業乙太網的接線元件,包括工業整合器、工業交換機、工業收發器、工業連線電纜。工業乙太網伺服器,包括遠端、分散式I/O掃描功能,裝置地址IP的設定功能,故障裝置線上更換。功能,分組的資訊釋出與訂閱功能,網路動態監視功能,還有支援瘦客戶機的Web服務。其他工控裝置的支援:如工業用人機介面、變頻器、軟起動器、電動機控制中心、乙太網I/O、各種現場匯流排的網橋、甚至帶TCP/IPModbus的感測器,都為使用者使用提供了方便。

相關推薦

基於tcp/ip協議ModBus

一 乙太網的標準   乙太網是一種區域網。早期標準為IEEE 802.3,資料鏈路層使用CSMA/CD,10Mb/s速度物理層有: (1)10 Base 5粗同軸電纜,RG-8,一段最長為500m; (2)10 Base 2細同軸電纜,RG-58,一段最長為185m;

基於TCP/IP協議的socket通訊server

while resource err close 通訊 ice inpu utils 緩沖 思路: socket必須要隨項目啟動時啟動,所以需用Spring自帶的監聽器,需要保持長連接,要用死循環,所以必須另外起線程,不能阻礙主線程運行 1.在項目的web.xml中配置li

JAVA——點對面通訊(Socket基於TCP/IP協議

點對面通訊(Socket基於TCP/IP協議) 1.要求 大多情況下,網路通訊經常需要多個客戶機同一個伺服器進行通訊,如FTP伺服器是同時接收多個客戶訪問的伺服器。本例介紹點對面通訊,即一個伺服器監聽多個客戶端的請求的通訊。 2.原理 建立多客戶連線的Soc

基於TCP/IP協議的Socket程式設計

如今的大多數網路通訊都是選擇使用基於TCP/IP的協議進行,其中封裝的比較好的當屬socket了,下面就socket的使用進行詳細的描述: 一、Socket的工作模式 在TCP/IP網路應用中,通訊的兩個程序間相互作用的主要模式是客戶/伺服器(C/S)模式,即客戶向伺服器發

網絡通信-在瀏覽器輸入url,基於TCP/IP協議的解釋

src url ima 按順序 網絡模型 code initial 技術 不重復 知識點1: 網絡模型 TCP/IP四層 和ISO七層模型 (統一省略後面層字。比如傳輸代表傳輸層) 知識點2: 在應用層中TCP建立連接,經歷的三次握手協議 首先:,TCP協議是什麽? 為

實現基於TCP/IP協議的簡單Client/Server程式

所謂簡單是指的是: 1、伺服器一次只能響應一個客戶端的請求,直到和客戶端斷開連結才可以響應下一個客戶端請求。不能多客戶端連結伺服器 客戶端: 我們是在本機上做的測試,所以客戶端所連結的host地址是用的127.0.0.1這個迴環地址。埠好使用1023以上

簡單的 C++ SOCKET程式設計 ---基於TCP/IP協議(轉)

server端: #include <WINSOCK2.H> #include <stdio.h> #pragma comment(lib,"ws2_32.lib") void main() { //建立套接字 WORD myVersion

基於TCP/IP 協議的簡單C/S程式

http://blog.chinaunix.net/uid-23069658-id-3273673.html http://www.oschina.net/code/snippet_153782_16562

如何基於TCP/IP協議進行MFC Socket網路通訊程式設計

MFC Socket網路通訊程式設計        最近因為一個專案需要進行區域網絡通訊,向工作單位的軟體工程師請教了一下需要用到哪些知識,然後博主就自學了一遍windows網路通訊程式設計原理,然後就在網上找了一大堆例子,但實際執行效果並不佳,花了大概一週多的時間總算是把

基於TCP/IP協議的聊天例項丨首篇介紹及資料包指令碼介紹

首篇介紹 本節包括: 1、資料包指令碼 2、以及對資料包指令碼的測試,檢驗資料包是否能正常工作 聊天例項實現流程:功能及實現流程連結   注:本例項與上鍊接內例項相互獨立,上鍊接為給讀者認識、以及學習TCP/IP提供參考 根據socket通訊基本流程圖

Android端與服務端基於TCP/IP協議的Socket通訊

什麼是TCP/IP協議? 百度百科的解釋:Transmission Control Protocol/Internet Protocol的簡寫,中譯名為傳輸控制協議/因特網互聯協議,又名網路通訊協議,是Internet最基本的協議、Internet國

基於TCP/IP協議的多執行緒雙向通訊在OpenWrt上的實現

1、TCP/IP協議組 TCP/IP協議(傳輸控制協議)由網路層的IP協議和傳輸層的TCP協議組成。 IP層負責網路主機的定位,資料傳輸的路由,由IP地址可以唯一的確定Internet上的一臺主機。 TCP層負責面向應用的可靠的或非可靠的資料

基於TCP/IP協議的C++網路程式設計(API函式版)

原始碼:http://download.csdn.net/detail/nuptboyzhb/4169959 基於TCP/IP協議的網路程式設計 定義變數——獲得WINSOCK版本——載入WINSOC

基於tcp/ip協議,使用socket進行簡單的多使用者聊天室

heardfirst裡面有基於tcp/ip協議的socket聊天程式,這裡做一下記錄 SimpleChatClient客戶端類 public class SimpleChatClientA { JTextArea incoimg; JText

基於tcp/ip協議的網路程式設計的一點感悟 ---關於ip和port作為通訊一端的唯一標識的認識

      對於基於tcp的應用程式來說,無論是客戶端,還是伺服器端,唯一標識對端id的是socket pair {本地ip:本地port, 遠端ip:遠端port} ,底層的ip協議資料包肯定包含源ip和port,目的ip和port, 當此資料包到達目的地時,目標主機的tc

網路程式設計 三 基於TCP/IP協議簡單伺服器構建

2018.0630********************************************************************** author:wills 網路程式設計入門 計算機網路基礎 計算機網路是獨立自主的

基於TCP/IP協議的Scoket JAVA程式設計

基於TCP/IP協議的Socket程式設計 1 TCP/IP協議 2 套接字(Socket)  2.1 Client/Server模式  2.2 套接字(Socket)概念 3 Socket類和ServerSocket類  3.1 Socket類  3.2 ServerSocket類 4

(轉) HTTP & HTTPS網絡協議重點總結(基於SSL/TLS的握手、TCP/IP協議基礎、加密學)

重點總結 csdn .net https clas 加密 網絡 tls spa HTTP & HTTPS網絡協議重點總結(基於SSL/TLS的握手、TCP/IP協議基礎、加密學) 原文:http://blog.csdn.net/itermeng/article/

http協議是用於從全球資訊網伺服器傳輸超文字到本地瀏覽器的傳送協議。所有www都遵從這個協議。http是一個基於TCP/IP的通訊協議來傳遞html 檔案 查詢結果 圖片檔案等

HTTP 工作原理 HTTP協議工作於客戶端-服務端架構上。瀏覽器作為HTTP客戶端通過URL向HTTP服務端即WEB伺服器傳送所有請求。 Web伺服器有:Apache伺服器,IIS伺服器(Internet Information Services)等。 Web伺服器根據接收到的請求後

一、基於linux下TCP\IP協議套接字(socket)初識

在網際網路的世界中,不同的電腦之間需要進行資料交流,那麼他們就需要一個統一的規範,來確定怎麼樣進行交流。根據國際標準化組織ISO定義的標準,網路結構按照不同的功能分為7層,分別是物理層、資料鏈路層、網路層、傳輸層、會話層、表示層和應用層。在TCP/IP協體系中,