1. <pre id="srmtd"></pre>
      
      
    2. <menuitem id="srmtd"></menuitem>

    3. Modbus基礎(chǔ)知識(shí)

      概述:

      Modbus是領(lǐng)先的工業(yè)開放式控制協(xié)議。該幫助頁(yè)面將討論一些基本概念并糾正一些常見的誤解,但不提供協(xié)議本身的詳細(xì)描述。


      Modbus的類型:

      Modbus有幾種不同的類型,具體取決于運(yùn)輸?shù)慕橘|(zhì)。

      • Modbus RTU - 這是原始Modbus。它通過(guò)RS-232和RS-485鏈路使用。
      • Modbus ASCII - 這與Modbus RTU類似,但數(shù)據(jù)以ASCII而不是原始二進(jìn)制編碼。該版本主要用于無(wú)線電鏈路。
      • Modbus / TCP - 此版本通過(guò)以太網(wǎng)使用。它類似于Modbus RTU,但使用內(nèi)置于以太網(wǎng)中的校驗(yàn)和,而不是包括RTU校驗(yàn)和。
      • Modbus over Ethernet - 這是一些供應(yīng)商使用的模糊術(shù)語(yǔ),但不是官方認(rèn)可的名稱。它通常用于指使用特殊硬件在兩點(diǎn)之間通過(guò)以太網(wǎng)隧道傳輸Modbus RTU。不是 Modbus標(biāo)準(zhǔn)的一部分,格式取決于供應(yīng)商。
      • Modbus / UDP - 這與Modbus / TCP類似,但使用UDP以太網(wǎng)套接字而不是TCP套接字。這是由一些供應(yīng)商提供的,但 不是 Modbus標(biāo)準(zhǔn)的一部分。
      • Modbus + - 這是一個(gè)使用Modbus名稱的專有協(xié)議,但不遵循Modbus通信標(biāo)準(zhǔn)。這很少遇到。

      MBLogic使用Modbus / TCP。


      通訊

      客戶/服務(wù)器或主/從:

      與大多數(shù)通信協(xié)議一樣,Modbus使用客戶端/服務(wù)器類型協(xié)議。這有時(shí)也稱為主/從。“主”與“客戶”是同一個(gè)東西,而“奴隸”與“服務(wù)器”是同一個(gè)東西。主/從術(shù)語(yǔ)起源于工業(yè),而客戶/服務(wù)器術(shù)語(yǔ)起源于計(jì)算機(jī)行業(yè)。不同的術(shù)語(yǔ)是由于它們?nèi)绾伪粦?yīng)用的歷史差異而產(chǎn)生的,但計(jì)算機(jī)行業(yè)術(shù)語(yǔ)在很大程度上取代了工業(yè)術(shù)語(yǔ),因?yàn)楣I(yè)界采用了更多現(xiàn)成的計(jì)算機(jī)技術(shù)。通常,客戶端是PLC或控制器,而服務(wù)器是現(xiàn)場(chǎng)設(shè)備,例如閥組或傳感器塊。

      “客戶端”向“服務(wù)器” 發(fā)送請(qǐng)求。服務(wù)器對(duì)該請(qǐng)求進(jìn)行解碼,并發(fā)送回一個(gè)響應(yīng)與請(qǐng)求的數(shù)據(jù)或確認(rèn)。這與其他常用協(xié)議的工作原理相同。

      例如,當(dāng)您使用Web瀏覽器在Internet上查看網(wǎng)頁(yè)時(shí),Web瀏覽器會(huì)向Web服務(wù)器發(fā)送“頁(yè)面請(qǐng)求”。Web服務(wù)器對(duì)請(qǐng)求進(jìn)行解碼,并將網(wǎng)頁(yè)作為“響應(yīng)”發(fā)回。您的電子郵件客戶端程序以相同的方式從郵件服務(wù)器提取您的電子郵件。

      單位ID:

      Modbus消息包括所謂的單元ID單元ID是0到255之間的數(shù)字,用于標(biāo)識(shí)RS-232或RS-485網(wǎng)絡(luò)中的服務(wù)器(或從站)地址。為每個(gè)服務(wù)器(從站)分配一個(gè)“從站ID”號(hào),并在單元ID字段中偵聽包含該號(hào)碼的消息。

      Modbus / TCP在其消息中也有單元ID,但以太網(wǎng)TCP / IP地址用于決定實(shí)際傳送消息的位置。許多或大多數(shù)服務(wù)器設(shè)備將忽略設(shè)備ID。但是,有些人會(huì)使用單元ID來(lái)決定是否將消息轉(zhuǎn)發(fā)出內(nèi)置串行端口。此消息轉(zhuǎn)發(fā)允許較舊的RS-485設(shè)備用于較新的以太網(wǎng)網(wǎng)絡(luò)。但是,只有少數(shù)設(shè)備才支持此功能。

      消息ID:

      當(dāng)Modbus消息發(fā)送請(qǐng)求時(shí),它包括消息ID 號(hào)。這是0到65,535之間的數(shù)字。對(duì)于每個(gè)請(qǐng)求,此數(shù)字通常由客戶端遞增(并且當(dāng)它溢出時(shí)允許再次翻轉(zhuǎn)到0)。此消息ID由服務(wù)器回顯。客戶端可以使用此消息ID號(hào)來(lái)確定是否有任何消息在傳輸中丟失或延遲。

      串口通訊參數(shù):

      當(dāng)通過(guò)RS-232或RS-585網(wǎng)絡(luò)使用時(shí),必須為所有設(shè)備正確設(shè)置通常的串行通信參數(shù),如波特率,奇偶校驗(yàn),停止位等。這里不討論這些參數(shù)的設(shè)定。請(qǐng)參閱供應(yīng)商文檔以獲取詳細(xì)信

      以太網(wǎng)參數(shù):

      通過(guò)以太網(wǎng)使用時(shí),Modbus / TCP不需要設(shè)置波特率或其他類似參數(shù)。但是,它確實(shí)需要使用正確的 IP地址端口號(hào)。

      “IP地址”是發(fā)送消息的設(shè)備的網(wǎng)絡(luò)地址。網(wǎng)絡(luò)上的每個(gè)設(shè)備都必須具有唯一的IP地址。可能的IP地址數(shù)量非常大(數(shù)十億個(gè)地址)。

      除IP地址外,還需要“端口號(hào)”。以太網(wǎng)“端口號(hào)”不是指物理連接器。端口號(hào)是在設(shè)備中的操作系統(tǒng)或固件使用的以太網(wǎng)報(bào)頭中發(fā)送的號(hào)碼,用于確定應(yīng)將消息發(fā)送到哪個(gè)程序。這允許多個(gè)程序共享同一個(gè)以太網(wǎng)適配器而不會(huì)發(fā)生沖突。當(dāng)客戶端發(fā)送消息時(shí),它發(fā)送它指定一個(gè)特定的端口號(hào)。當(dāng)服務(wù)器收到消息時(shí),操作系統(tǒng)或固件將查看端口號(hào)并將消息路由到正確的程序。

      當(dāng)服務(wù)器程序啟動(dòng)時(shí),它將“綁定到端口”。這只是意味著它會(huì)要求為操作系統(tǒng)分配一個(gè)特定的端口號(hào)。任何時(shí)候只有一個(gè)服務(wù)器可以綁定到同一個(gè)端口號(hào)。如果端口號(hào)已被其他程序使用,則不允許新服務(wù)器程序使用它,并且將遇到錯(cuò)誤。當(dāng)服務(wù)器程序關(guān)閉時(shí),它釋放了端口的使用。然后,在允許再次使用該端口號(hào)之前,操作系統(tǒng)將等待一定的超時(shí)時(shí)間(標(biāo)準(zhǔn)為70秒)。

      Modbus / TCP的“標(biāo)準(zhǔn)”端口號(hào)是端口502.就協(xié)議本身而言,它使用的端口號(hào)是完全透明的。Modbus協(xié)議消息本身不發(fā)送端口號(hào)。但是,端口502按慣例被識(shí)別為要使用的標(biāo)準(zhǔn)端口號(hào),因此大多數(shù)現(xiàn)場(chǎng)設(shè)備將在端口502上進(jìn)行偵聽。但是,可以在備用端口號(hào)上運(yùn)行Modbus / TCP,前提是所有參與通信可以配置為使用備用端口。


      Modbus數(shù)據(jù)表示:

      數(shù)據(jù)表

      Modbus使用數(shù)據(jù)表的概念來(lái)引用數(shù)據(jù)。使用PLC的任何人都應(yīng)該熟悉數(shù)據(jù)表。數(shù)據(jù)表是用于存儲(chǔ)數(shù)據(jù)的數(shù)組或內(nèi)存塊。使用數(shù)據(jù)表地址引用數(shù)據(jù)。Modbus數(shù)據(jù)表地址有四種類型。

      • 離散輸入 - 這些是只讀布爾值。它們通常用于表示傳感器輸入和其他布爾值,這些布爾值是由用戶讀取但不寫入的。
      • 線圈 - 這些是讀寫布爾值。它們通常用于表示輸出(例如閥電磁閥)或內(nèi)部位,它們都由用戶讀取和寫入。
      • 輸入寄存器 - 這些是只讀16位整數(shù)。它們通常用于表示模擬輸入值和其他整數(shù)值,這些值由用戶讀取但不寫入。
      • 保持寄存器 - 這些是讀寫16位整數(shù)。它們通常用于表示模擬輸出或內(nèi)部數(shù)字,它們由用戶讀取和寫入。

      除了布爾和整數(shù)的本機(jī)數(shù)據(jù)類型之外,還可以通過(guò)在多個(gè)寄存器上分割數(shù)據(jù)來(lái)在Modbus數(shù)據(jù)表中存儲(chǔ)大整數(shù),浮點(diǎn)數(shù)和字符串。但是,Modbus不提供任何直接支持,因此用戶負(fù)責(zé)將值拆分并將它們存儲(chǔ)在不同的位置。

      數(shù)據(jù)表地址

      Modbus數(shù)據(jù)表地址只是整數(shù)。每種地址類型(離散輸入,線圈,輸入寄存器,保持寄存器)都有自己編號(hào)的地址集。例如,離散輸入42和線圈42是兩個(gè)單獨(dú)的地址。

      Modbus區(qū)分協(xié)議地址和 數(shù)據(jù)模型地址。協(xié)議中使用的地址編號(hào)為0到65,535。但是,供應(yīng)商文檔的編號(hào)可能為1到65,536。本文檔將引用協(xié)議地址(即第一個(gè)地址為0)。

      雖然每種類型的地址可能有65,536個(gè),但在特定設(shè)備(傳感器塊,閥組,PLC等)中實(shí)際實(shí)現(xiàn)的地址數(shù)量通常要少得多。每個(gè)設(shè)備設(shè)計(jì)人員負(fù)責(zé)決定對(duì)其應(yīng)用程序有意義的內(nèi)容。然后,他們通常會(huì)為其設(shè)備提供“存儲(chǔ)器映射”或地址列表,列出實(shí)施的地址以及每個(gè)地址的功能。

      也可以“覆蓋”地址類型。也就是說(shuō),可以設(shè)計(jì)一種設(shè)備,使得幾種不同的地址類型都指向相同的物理存儲(chǔ)器位置。例如,可以使保持寄存器10和輸入寄存器10都是相同的存儲(chǔ)位置。在這種情況下,如果您要寫入保持寄存器10,該值也將出現(xiàn)在輸入寄存器10中。這同樣適用于線圈和離散輸入。

      以同樣的方式,可以在寄存器中包裝線圈和離散輸入。例如,線圈0至15可以被包裝在保持寄存器0中,線圈16至31被包裝在保持寄存器1中,等等。這將允許多個(gè)線圈被讀?。ɑ?qū)懭耄┳鳛樽帧?/font>

      盡管可以疊加數(shù)據(jù)類型并將線圈封裝到寄存器中,但實(shí)際上并不常見。

      關(guān)于Modbus地址的一些常見誤解

      根據(jù)Modbus標(biāo)準(zhǔn),地址只是從0到65,535的整數(shù),不同的地址范圍被稱為線圈,保持寄存器等。但是,一些供應(yīng)商將使用數(shù)字前綴來(lái)記錄其硬件,這些前綴實(shí)際上不是Modbus地址的一部分。 。這源于一些使用Modbus通信協(xié)議的PLC模型,并且在其內(nèi)部數(shù)據(jù)表中也使用了數(shù)字前綴。這類似于使用“I”,“Q”,“V”等作為IEC類型PLC中的地址前綴。

      但是,重要的是要記住這些數(shù)字前綴是文檔方法,并不是 Modbus協(xié)議本身作為消息的一部分發(fā)送的部分。文檔方法的不同不會(huì)影響協(xié)議本身的兼容性。

      這些前綴是在Modbus標(biāo)準(zhǔn)中的任何地方提到的,但以下顯示了它們?nèi)绾卧诨谶@個(gè)較舊的約定的文檔中使用:

      • 0xxxx - 線圈。
      • 1xxxx - 離散輸入。
      • 3xxxx - 輸入寄存器。
      • 4xxxx - 保持寄存器。

      請(qǐng)注意,沒有2xxxx地址前綴。

      除了數(shù)字前綴之外,一些文檔將引用協(xié)議地址(地址從0開始),而其他文檔將引用數(shù)據(jù)模型地址(地址從1開始)。也就是說(shuō),第一個(gè)保持寄存器可以是0或1(或40000對(duì)40001使用前綴)。但是,這與作為Modbus消息通過(guò)線路發(fā)送的內(nèi)容無(wú)關(guān)。對(duì)于Modbus協(xié)議消息,最低地址始終為“0”,而不是“1”。

      本文檔在使用Modbus協(xié)議尋址時(shí)使用標(biāo)準(zhǔn)Modbus術(shù)語(yǔ)和地址,沒有前綴或偏移。但是,如果您正在閱讀傳感器塊,閥門和其他設(shè)備的文檔,則必須記住某些供應(yīng)商可能以不同方式記錄其硬件。


      Modbus命令或“功能”:

      功能:

      Modbus命令稱為功能。函數(shù)只是讀取或?qū)懭霐?shù)據(jù)表地址的命令。功能是諸如1,2,3,4等的數(shù)字。例如,功能“1”將讀取一個(gè)或多個(gè)線圈。功能“15”將寫入一個(gè)或多個(gè)線圈。所有功能代碼都被定義為Modbus標(biāo)準(zhǔn)的一部分,但實(shí)際在任何特定設(shè)備中實(shí)現(xiàn)的功能取決于設(shè)備設(shè)計(jì)者。例如,閥組可以僅實(shí)現(xiàn)用于寫入線圈的功能,因?yàn)檫@是該設(shè)備所必需的。

      最常見的功能如下所示。Modbus標(biāo)準(zhǔn)中定義了許多其他功能,但這些功能是最常遇到的功能。

      • 1 - 讀取多個(gè)線圈。
      • 2 - 讀取多個(gè)離散輸入。
      • 3 - 讀取多個(gè)保持寄存器。
      • 4 - 讀取多個(gè)輸入寄存器。
      • 5 - 寫單線圈。
      • 6 - 寫單保持寄存器。
      • 15 - 寫多個(gè)線圈。
      • 16 - 寫入多個(gè)保持寄存器。

      數(shù)量:

      讀取或?qū)懭攵鄠€(gè)地址的Modbus功能也需要數(shù)量參數(shù)。“quantity”參數(shù)指定要讀取或?qū)懭氲倪B續(xù)地址的數(shù)量。

      一次可以讀取或?qū)懭氲淖畲蟮刂窋?shù):

      modbus協(xié)議指定一次可以讀取或?qū)懭氲淖畲蟮刂窋?shù)。這將在單個(gè)命令中必須傳輸?shù)臄?shù)據(jù)量限制為不超過(guò)255個(gè)字節(jié)。對(duì)于讀取命令,限制是2000個(gè)線圈或離散輸入或125個(gè)寄存器。對(duì)于寫命令,限制是1968個(gè)線圈或123個(gè)寄存器。


      Modbus錯(cuò)誤:

      Modbus故障:

      當(dāng)服務(wù)器收到Modbus消息時(shí),將對(duì)其進(jìn)行分析以查看所有參數(shù)是否正確。如果一切正常,服務(wù)器將發(fā)送響應(yīng)。此響應(yīng)可能包含數(shù)據(jù),也可能只是確認(rèn)收到了消息。

      但是,如果有任何錯(cuò)誤,服務(wù)器可能會(huì)執(zhí)行以下兩種操作之一。如果消息根本無(wú)法解碼(例如,存在錯(cuò)誤的校驗(yàn)和),則簡(jiǎn)單地丟棄該消息。如果消息可以被解碼但是一個(gè)或多個(gè)參數(shù)不正確(例如,嘗試讀取不存在的地址),則服務(wù)器將發(fā)送包含故障代碼的響應(yīng)故障代碼只是請(qǐng)求中添加了128的功能代碼。

      例如,如果客戶端發(fā)送包含錯(cuò)誤的功能3(讀取保持寄存器)的請(qǐng)求,則服務(wù)器將以131(3 + 128 = 131)的故障代碼進(jìn)行響應(yīng)。

      Modbus例外:

      除了故障代碼之外,服務(wù)器還將返回一個(gè)異常代碼,該代碼提供有關(guān)錯(cuò)誤的更多詳細(xì)信息。為每個(gè)函數(shù)單獨(dú)定義異常代碼,但對(duì)于大多數(shù)常見函數(shù),以下內(nèi)容將適用:

      • 1 =不支持所請(qǐng)求的功能代碼(命令)。
      • 2 =地址不正確(不存在)。對(duì)于在多個(gè)地址上運(yùn)行的功能,此檢查包括受請(qǐng)求影響的所有地址。
      • 3 =地址數(shù)量不正確。對(duì)于所請(qǐng)求的功能,數(shù)量參數(shù)太大(或?yàn)榱悖?/font>
      • 4 =服務(wù)器中發(fā)生了一些未指定的錯(cuò)誤,導(dǎo)致請(qǐng)求無(wú)法執(zhí)行。

      日韩无码a片精彩视频,精品国产一区二区三区免费看,U久久精品国产99国产精品亚洲,亚洲色欧美色国产精品

        1. <pre id="srmtd"></pre>
          
          
        2. <menuitem id="srmtd"></menuitem>