<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Modbus應(yīng)用程序協(xié)議規(guī)范V1.1b3

      1.介紹

      1.1本文件范圍

      MODBUS是一種應(yīng)用層消息傳遞協(xié)議,位于OSI模型的第7級(jí),它在不同類型的總線或網(wǎng)絡(luò)上連接的設(shè)備之間提供客戶端/服務(wù)器通信。

      MODBUS是一種請(qǐng)求/回復(fù)協(xié)議,并提供由功能碼指定的服務(wù)。MODBUS功能碼是MODBUS請(qǐng)求/回復(fù)pdu的元素。本文檔的目的是描述在MODBUS事務(wù)框架內(nèi)使用的功能碼。

      目前,它使用:

      • 以太網(wǎng)上的 TCP/IP。請(qǐng)參見(jiàn)MODBUS消息傳遞實(shí)現(xiàn)指南V1.0a。
      • 在各種媒體上進(jìn)行的異步串行傳輸(電線:EIA/TIA-232-E、EIA-422、EIA/TIA-485-A;光纖、無(wú)線電等)。
      • MODBUS+,一個(gè)高速令牌傳遞網(wǎng)絡(luò)。

      2.縮寫

      • ADU 應(yīng)用數(shù)據(jù)單元
      • ADU 應(yīng)用數(shù)據(jù)單元控制
      • HMI 人機(jī)接口
      • IETF 互聯(lián)網(wǎng)工程任務(wù)組
      • I/O 輸入/輸出
      • IP 互聯(lián)網(wǎng)協(xié)議
      • MAC 媒體訪問(wèn)控制
      • MB MODBUS協(xié)議
      • MBAP MODBUS應(yīng)用協(xié)議
      • PDU 協(xié)議數(shù)據(jù)單元
      • PLC 可編程邏輯控制
      • TCP 傳輸控制協(xié)議

      3.背景

      MODBUS協(xié)議允許在所有類型的網(wǎng)絡(luò)架構(gòu)中進(jìn)行輕松的通信。

      每種類型的設(shè)備(PLC、HMI、控制面板、驅(qū)動(dòng)程序、運(yùn)動(dòng)控制、I/O設(shè)備……)都可以使用MODBUS協(xié)議啟動(dòng)遠(yuǎn)程操作。

      可以在串行線上和在以太網(wǎng)TCP/IP網(wǎng)絡(luò)上進(jìn)行相同的通信。網(wǎng)關(guān)允許使用MODBUS協(xié)議在幾種類型的總線或網(wǎng)絡(luò)之間進(jìn)行通信。

      4. 一般說(shuō)明

      4.1協(xié)議描述

      MODBUS 協(xié)議定義了一個(gè)獨(dú)立于底層通信層的簡(jiǎn)單協(xié)議數(shù)據(jù)單元 (PDU)。 MODBUS 協(xié)議在特定總線或網(wǎng)絡(luò)上的映射可以在應(yīng)用數(shù)據(jù)單元(ADU)上引入一些附加字段。

      MODBUS應(yīng)用程序數(shù)據(jù)單元由啟動(dòng)MODBUS事務(wù)的客戶端構(gòu)建。該函數(shù)向服務(wù)器指示要執(zhí)行什么類型的操作。MODBUS應(yīng)用程序協(xié)議建立了由客戶端發(fā)起的請(qǐng)求的格式。

      MODBUS數(shù)據(jù)單元的功能碼字段以一個(gè)字節(jié)進(jìn)行編碼。有效代碼的范圍為1…255十進(jìn)制(保留的范圍為128-255,并用于異常響應(yīng))。當(dāng)消息從客戶端發(fā)送到服務(wù)器設(shè)備時(shí),功能碼字段會(huì)告訴服務(wù)器要執(zhí)行什么類型的操作。功能碼“0”無(wú)效。

      子功能碼被添加到一些功能碼中,以定義多個(gè)操作。

      從客戶端發(fā)送到服務(wù)器的消息的數(shù)據(jù)字段包含服務(wù)器用于執(zhí)行由功能碼定義的操作的附加信息。這可以包括離散地址和寄存器地址、要處理的項(xiàng)目數(shù)量以及字段中實(shí)際數(shù)據(jù)字節(jié)的計(jì)數(shù)。

      在某些類型的請(qǐng)求中,數(shù)據(jù)字段可能不存在(零長(zhǎng)度),在這種情況下,服務(wù)器不需要任何附加信息。該功能碼單獨(dú)指定了該操作。

      如果在正確接收的MODBUS ADU中所請(qǐng)求的MODBUS功能沒(méi)有發(fā)生錯(cuò)誤,則從服務(wù)器到客戶端的響應(yīng)的數(shù)據(jù)字段包含所請(qǐng)求的數(shù)據(jù)。如果發(fā)生與所請(qǐng)求的MODBUS功能相關(guān)的錯(cuò)誤,則該字段將包含一個(gè)異常代碼,服務(wù)器應(yīng)用程序可以使用該異常代碼來(lái)確定下一個(gè)要采取的操作。

      例如,客戶端可以讀取一組離散輸出或輸入的開(kāi)/關(guān)狀態(tài),也可以讀取/寫一組寄存器的數(shù)據(jù)內(nèi)容。

      當(dāng)服務(wù)器響應(yīng)客戶端時(shí),它將使用功能碼字段來(lái)指示正常(無(wú)錯(cuò)誤)響應(yīng)或發(fā)生了某種錯(cuò)誤(稱為異常響應(yīng))。對(duì)于正常響應(yīng),服務(wù)器簡(jiǎn)單地向請(qǐng)求回顯原始功能碼。

      對(duì)于異常響應(yīng),服務(wù)器返回與請(qǐng)求PDU中的原始功能碼相同的代碼,其最高有效位設(shè)置為邏輯1。

      MODBUS PDU 的大小受限于從串行線路網(wǎng)絡(luò)上的第一個(gè) MODBUS 實(shí)現(xiàn)繼承的大小約束(最大 RS485 ADU = 256 字節(jié))。

      因此:

      MODBUS用于串行線通信的PDU=256-服務(wù)器地址(1字節(jié))-CRC(2字節(jié))=253字節(jié)。

      最后:

      RS232/RS485 ADU=253字節(jié)+Server地址(1字節(jié))+CRC(2字節(jié))=256字節(jié)。

      TCPMODBUS ADU=253字節(jié)+MBAP(7字節(jié))=260字節(jié)。

      MODBUS協(xié)議定義了三個(gè)PDU。它們分別是:

      • MODBUS請(qǐng)求PDU, mb_req_pdu
      • MODBUS響應(yīng)PDU,mb_rsp_pdu
      • MODBUS異常響應(yīng)PDU,mb_excep_rsp_pdu

      對(duì)mb_req_pdu的定義為:

      mb_req_pdu = {function_code, request_data}

      function_code = [1字節(jié)]MODBUS功能碼

      request_data = [n字節(jié)]這個(gè)字段依賴于功能碼,通常包含變量引用、變量計(jì)數(shù)、數(shù)據(jù)偏移量、子函數(shù)代碼。

      對(duì)mb_rsp_pdu的定義為:

      mb_rsp_pdu={function_code,response_data}

      function_code=[1字節(jié)]MODBUS功能碼

      response_data=[n字節(jié)]這個(gè)字段依賴于功能碼,通常包含變量引用、變量計(jì)數(shù)、數(shù)據(jù)偏移量、子函數(shù)代碼。

      對(duì)mb_excep_rsp_pdu的定義為:

      mb_excep_rsp_pdu={exception-function_code,request_data}

      exception-function_code=[1字節(jié)]MODBUS功能碼+0x80

      exception_code=[1字節(jié)]MODBUS異常碼定義在表“MODBUS異常代碼”(參見(jiàn)第7節(jié))。

      4.2數(shù)據(jù)編碼

      MODBUS對(duì)地址和數(shù)據(jù)項(xiàng)使用“大端”表示。這意味著,當(dāng)傳輸?shù)臄?shù)值大于一個(gè)字節(jié)時(shí),將首先發(fā)送最高的字節(jié)。例如

       

      4.3MODBUS數(shù)據(jù)模型

      MODBUS的數(shù)據(jù)模型基于一系列具有顯著特征的表。

      這四個(gè)主要表包括:

      在輸入和輸出之間的區(qū)別,以及在可位尋址和可文字尋址數(shù)據(jù)項(xiàng)之間的區(qū)別,并不意味著任何程序行為。如果這是對(duì)相關(guān)目標(biāo)機(jī)器最自然的解釋,那么認(rèn)為所有四個(gè)表相互疊加是完全可以接受的,而且也是非常常見(jiàn)的。

      對(duì)于每個(gè)主表,該協(xié)議允許單獨(dú)選擇65536個(gè)數(shù)據(jù)項(xiàng),并且這些項(xiàng)的讀取或?qū)懖僮鞅辉O(shè)計(jì)為跨越多個(gè)連續(xù)的數(shù)據(jù)項(xiàng),直到依賴于事務(wù)函數(shù)代碼的數(shù)據(jù)大小限制。

      很明顯,所有通過(guò)MODBUS(位、寄存器)處理的數(shù)據(jù)都必須位于設(shè)備應(yīng)用程序內(nèi)存中。但是內(nèi)存中的物理地址不應(yīng)該與數(shù)據(jù)引用相混淆。唯一的要求是將數(shù)據(jù)引用與物理地址鏈接起來(lái)。

      在MODBUS函數(shù)中使用的MODBUS邏輯引用數(shù)是從零開(kāi)始的無(wú)符號(hào)整數(shù)索引。

      • MODBUS模型的實(shí)現(xiàn)例子

      下面的示例顯示了組織設(shè)備中數(shù)據(jù)的兩種方法。 可能存在不同的組織方法,但本文檔并未對(duì)所有組織方法進(jìn)行描述。 每個(gè)設(shè)備都可以根據(jù)其應(yīng)用程序擁有自己的數(shù)據(jù)組織。

      示例1:具有4個(gè)獨(dú)立數(shù)據(jù)塊的設(shè)備

      下面的示例顯示了具有數(shù)字和模擬、輸入和輸出的設(shè)備中的數(shù)據(jù)組織。每個(gè)塊都是獨(dú)立的,因?yàn)閬?lái)自不同塊的數(shù)據(jù)沒(méi)有相關(guān)性。因此,每個(gè)塊都可以使用不同的MODBUS函數(shù)進(jìn)行訪問(wèn)。

      示例2:只有一個(gè)數(shù)據(jù)塊的設(shè)備

      在本例中,該設(shè)備只有1個(gè)數(shù)據(jù)塊。相同的數(shù)據(jù)可以通過(guò)幾個(gè)MODBUS函數(shù)獲得,或通過(guò)16位訪問(wèn)或通過(guò)位訪問(wèn)。

      4.4MODBUS地址模型

      MODBUS應(yīng)用程序協(xié)議精確地定義了PDU尋址規(guī)則。在 MODBUS PDU 中,每個(gè)數(shù)據(jù)的尋址范圍為 0 到 65535。

      它還清楚地定義了由 4 個(gè)塊組成的 MODBUS 數(shù)據(jù)模型,這些塊包括從 1 到 n 編號(hào)的幾個(gè)元素。

      在MODBUS數(shù)據(jù)模型中,數(shù)據(jù)塊中的每個(gè)元素的編號(hào)都從1到n。然后,MODBUS數(shù)據(jù)模型必須綁定到設(shè)備應(yīng)用程序。

      MODBUS 數(shù)據(jù)模型和設(shè)備應(yīng)用程序之間的預(yù)映射完全是供應(yīng)商設(shè)備特定的。

      上圖顯示編號(hào)為 X 的 MODBUS 數(shù)據(jù)在 MODBUS PDU X-1 中尋址。

      4.5定義 MODBUS 事務(wù)

      以下?tīng)顟B(tài)圖描述了在服務(wù)器端對(duì)MODBUS事務(wù)的通用處理。

      一旦服務(wù)器處理了請(qǐng)求,就會(huì)使用適當(dāng)?shù)腗ODBUS服務(wù)器事務(wù)構(gòu)建MODBUS響應(yīng)。

      根據(jù)處理的結(jié)果,將構(gòu)建兩種類型的響應(yīng):

      • 積極的 MODBUS 響應(yīng):
        • 響應(yīng)功能碼=請(qǐng)求功能碼
      • MODBUS異常響應(yīng):
        • 其目的是向客戶提供有關(guān)在處理過(guò)程中檢測(cè)到的錯(cuò)誤的相關(guān)信息;
        • 響應(yīng)功能碼=請(qǐng)求功能碼+0x80;
        • 提供了一個(gè)異常代碼來(lái)指示錯(cuò)誤的原因。

      5.功能碼類別

      MODBUS功能代碼有三類。它們是:

      • 公共功能代碼
        • 定義良好的功能碼
        • 保證獨(dú)一無(wú)二
        • 已由社區(qū)進(jìn)行驗(yàn)證
        • 公開(kāi)記錄的
        • 有可用的一致性測(cè)試
        • 包括已定義的公共分配功能碼以及保留供將來(lái)使用的未分配功能碼
      • 用戶定義的功能碼
        • 用戶定義的功能碼有兩個(gè)范圍,即從65到72和從100到110的十進(jìn)制。
        • 用戶可以選擇并實(shí)現(xiàn)該規(guī)范不支持的功能碼。
        • 不能保證所選功能碼的使用將是唯一的。
        • 如果用戶希望將該功能重新定位為公共功能碼,他必須啟動(dòng)一個(gè)RFC來(lái)將更改引入公共類別,并分配一個(gè)新的公共功能碼。
        • MODBUS組織公司明確保留開(kāi)發(fā)擬議的RFC的權(quán)利。
      • 保留功能碼
        • 一些公司目前用于遺留產(chǎn)品的功能代碼,但不供公眾使用。
        • 參考性說(shuō)明。

      5.1公共功能碼定義

      6.功能碼描述

      6.1 讀取線圈01(0x01)

      此功能碼用于讀取遠(yuǎn)程設(shè)備中從1到2000個(gè)線圈的連續(xù)狀態(tài)。請(qǐng)求PDU指定了起始地址,即所指定的第一個(gè)線圈的地址,以及線圈的數(shù)量。在PDU中,線圈從零開(kāi)始處理。因此,編號(hào)為1-16的線圈被命名為0-15。

      響應(yīng)消息中的線圈被打包為數(shù)據(jù)字段的每一位一個(gè)線圈。 狀態(tài)表示為 1= ON 和 0= OFF。 第一個(gè)數(shù)據(jù)字節(jié)的 LSB 包含查詢中尋址的輸出。 其他線圈跟隨到該字節(jié)的高位端,并在后續(xù)字節(jié)中從低位到高位。

      如果返回的輸出量不是8的倍數(shù),則最終數(shù)據(jù)字節(jié)中的其余位將用零填充(朝向字節(jié)的高階末端)。“字節(jié)計(jì)數(shù)”字段指定完整字節(jié)的數(shù)量。

      *N = 輸出的數(shù)量/8,如果余數(shù)不為0,則N=N+1

      以下是讀取離散輸出 20–38 的請(qǐng)求示例:

      輸出27-20的狀態(tài)顯示為字節(jié)值CD十六進(jìn)制。輸出27是這個(gè)字節(jié)的MSB,輸出20是LSB。

      按照慣例,一個(gè)字節(jié)中的位顯示為 MSB 在左邊,LSB 在右邊。 因此,第一個(gè)字節(jié)中的輸出從左到右是“27 到 20”。 下一個(gè)字節(jié)從左到右輸出“35 到 28”。 由于位是串行傳輸?shù)?,因此它們?LSB 流向 MSB: 20 。 . . 27, 28 。 . . 35,以此類推。

      在最后一個(gè)數(shù)據(jù)字節(jié)中,輸出 38-36 的狀態(tài)顯示為字節(jié)值 05 十六進(jìn)制。輸出 38 位于左起第六位位置,輸出 36 是該字節(jié)的 LSB。 剩下的五個(gè)高位用零填充。

      6.2 讀取離散輸入 02(0x02)

      此功能代碼用于讀取遠(yuǎn)程設(shè)備中離散輸入的1到2000個(gè)連續(xù)狀態(tài)。請(qǐng)求PDU指定了起始地址,即指定的第一個(gè)輸入的地址以及輸入的數(shù)量。在PDU中,離散輸入從零開(kāi)始被尋址。因此,編號(hào)為1-16的離散輸入被處理為0-15。

      響應(yīng)消息中的離散輸入被打包為數(shù)據(jù)字段的每一位一個(gè)輸入。 狀態(tài)表示為 1=ON; 0 = 關(guān)閉。 第一個(gè)數(shù)據(jù)字節(jié)的 LSB 包含查詢中尋址的輸入。 其他輸入跟隨該字節(jié)的高位端,并在后續(xù)字節(jié)中從低位到高位。

      如果返回的輸入數(shù)量不是 8 的倍數(shù),則最終數(shù)據(jù)字節(jié)中的剩余位將用零填充(朝向字節(jié)的高位端)。 字節(jié)計(jì)數(shù)字段指定完整數(shù)據(jù)字節(jié)的數(shù)量。

      以下是讀取離散輸入 197 – 218 的請(qǐng)求示例:

      離散輸入 204–197 的狀態(tài)顯示為字節(jié)值 AC 十六進(jìn)制。輸入 204 是該字節(jié)的 MSB,輸入 197 是 LSB。

      離散輸入 218–213 的狀態(tài)顯示為字節(jié)值 35 十六進(jìn)制。輸入 218 位于左起第三位位置,輸入 213 是 LSB。

      注意: 剩余的兩個(gè)位(朝向高階端)為零填充。

      6.3 讀取保持寄存器 03(0x03)

      該功能碼用于讀取遠(yuǎn)程設(shè)備中連續(xù)的保持寄存器塊的內(nèi)容。 請(qǐng)求 PDU 指定起始寄存器地址和寄存器數(shù)量。 在 PDU 寄存器中,從零開(kāi)始尋址。 因此,編號(hào)為 1-16 的寄存器被尋址為 0-15。

      響應(yīng)消息中的寄存器數(shù)據(jù)被打包為每個(gè)寄存器兩個(gè)字節(jié),每個(gè)字節(jié)內(nèi)的二進(jìn)制內(nèi)容右對(duì)齊。 對(duì)于每個(gè)寄存器,第一個(gè)字節(jié)包含高位,第二個(gè)字節(jié)包含低位。

      以下是讀取寄存器 108 – 110 的請(qǐng)求示例:

      6.4 讀取輸入寄存器 04(0x04)

      該功能碼用于讀取遠(yuǎn)程設(shè)備中 1 到 125 個(gè)連續(xù)輸入寄存器。 請(qǐng)求 PDU 指定起始寄存器地址和寄存器數(shù)量。 在 PDU 寄存器中,從零開(kāi)始尋址。 因此,編號(hào)為 1-16 的輸入寄存器尋址為 0-15。

      響應(yīng)消息中的寄存器數(shù)據(jù)被打包為每個(gè)寄存器兩個(gè)字節(jié),每個(gè)字節(jié)內(nèi)的二進(jìn)制內(nèi)容右對(duì)齊。 對(duì)于每個(gè)寄存器,第一個(gè)字節(jié)包含高位,第二個(gè)字節(jié)包含低位。

      下面是一個(gè)要讀取輸入寄存器9的請(qǐng)求的示例:

      6.5 寫單個(gè)線圈 05(0x05)

      此功能碼用于在遠(yuǎn)程設(shè)備中將單個(gè)輸出寫入 ON 或 OFF。

      請(qǐng)求 PDU 指定要強(qiáng)制的線圈的地址。 線圈從零開(kāi)始尋址。 因此編號(hào)為 1 的線圈被尋址為 0。請(qǐng)求的 ON/OFF 狀態(tài)由線圈值字段中的常量指定。 值 0XFF00 請(qǐng)求線圈開(kāi)啟。 值 0X0000 要求關(guān)閉線圈。 所有其他值都是非法的,不會(huì)影響線圈。

      正常響應(yīng)是請(qǐng)求的回顯,在寫入線圈狀態(tài)后返回。

      以下是將線圈 173 寫入 ON 的請(qǐng)求示例:

      6.6 寫單個(gè)寄存器 06(0x06)

      此功能代碼用于在遠(yuǎn)程設(shè)備中寫入單個(gè)保持寄存器。

      請(qǐng)求 PDU 指定要寫入的寄存器的地址。 寄存器從零開(kāi)始尋址。 因此,編號(hào)為 1 的寄存器被尋址為 0。

      正常響應(yīng)是請(qǐng)求的回顯,在寫入寄存器內(nèi)容后返回。

      以下是將寄存器 2 寫入 0x0003的請(qǐng)求示例:

      6.7 讀異常狀態(tài) 07(0x07)(僅串行線)

      該功能碼用于讀取遠(yuǎn)程設(shè)備中 8 個(gè)異常狀態(tài)輸出的內(nèi)容。

      該功能提供了一種訪問(wèn)此信息的簡(jiǎn)單方法,因?yàn)楫惓]敵鲆檬且阎模ê瘮?shù)中不需要輸出引用)。

      正常響應(yīng)包含八個(gè)異常狀態(tài)輸出的狀態(tài)。 輸出被打包成一個(gè)數(shù)據(jù)字節(jié),每個(gè)輸出一位。 最低輸出參考的狀態(tài)包含在字節(jié)的最低有效位中。

      八個(gè)異常狀態(tài)輸出的內(nèi)容是特定于設(shè)備的。

      下面是一個(gè)要讀取異常狀態(tài)的請(qǐng)求的示例:

      在本例中,輸出數(shù)據(jù)為 6D 十六進(jìn)制(0110 1101 二進(jìn)制)。 從左到右,輸出為 OFF-ON-ON-OFF-ON-ON-OFF-ON。 狀態(tài)從最高地址到最低地址的輸出顯示。

      6.8 診斷 08(0x08)(僅串行線)

      MODBUS 功能碼 08 提供了一系列測(cè)試,用于檢查客戶端設(shè)備和服務(wù)器之間的通信系統(tǒng),或檢查服務(wù)器內(nèi)部的各種錯(cuò)誤情況。

      ------未翻譯------

      6.9 獲取Comm事件計(jì)數(shù)器 11(0x0B)(僅串行線)

      該功能碼用于從遠(yuǎn)程設(shè)備的通信事件計(jì)數(shù)器中獲取狀態(tài)字和事件計(jì)數(shù)。

      通過(guò)獲取一系列消息前后的當(dāng)前計(jì)數(shù),客戶端可以確定遠(yuǎn)程設(shè)備是否能正常處理這些消息。

      每次成功完成消息后,設(shè)備的事件計(jì)數(shù)器都會(huì)增加一次。 對(duì)于異常響應(yīng)、輪詢命令或獲取事件計(jì)數(shù)器命令,它不會(huì)增加。

      事件計(jì)數(shù)器可以通過(guò)診斷功能(代碼 08)復(fù)位,具有重新啟動(dòng)通信選項(xiàng)(代碼 00 01)或清除計(jì)數(shù)器和診斷寄存器(代碼 00 0A)的子功能。

      正常響應(yīng)包含一個(gè)兩字節(jié)的狀態(tài)字和一個(gè)兩字節(jié)的事件計(jì)數(shù)。 如果遠(yuǎn)程設(shè)備仍在處理先前發(fā)出的程序命令(存在忙狀態(tài)),則狀態(tài)字將為全 1(FF FF 十六進(jìn)制)。 否則,狀態(tài)字將全為零。

      以下是獲取遠(yuǎn)程設(shè)備中的通信事件計(jì)數(shù)器的請(qǐng)求示例:

      在此示例中,狀態(tài)字為 0xFFFF,表示遠(yuǎn)程設(shè)備中的程序功能仍在進(jìn)行中。事件計(jì)數(shù)顯示設(shè)備已計(jì)數(shù)了 264 個(gè)(01 08 hex)事件。

      6.10 獲取Comm事件日志 12(0x0C)(僅串行線)

      此功能代碼用于從遠(yuǎn)程設(shè)備獲取狀態(tài)字、事件計(jì)數(shù)、消息計(jì)數(shù)和事件字節(jié)字段。

      狀態(tài)字和事件計(jì)數(shù)與獲取通信事件計(jì)數(shù)器功能(11,0B 十六進(jìn)制)返回的相同。

      消息計(jì)數(shù)器包含遠(yuǎn)程設(shè)備自上次重啟、清除計(jì)數(shù)器操作或上電以來(lái)處理的消息數(shù)量。 此計(jì)數(shù)與診斷功能(代碼 08)、子功能返回總線消息計(jì)數(shù)(代碼 11,0B 十六進(jìn)制)返回的計(jì)數(shù)相同。

      事件字節(jié)字段包含 0-64 個(gè)字節(jié),每個(gè)字節(jié)對(duì)應(yīng)于遠(yuǎn)程設(shè)備的一個(gè) MODBUS 發(fā)送或接收操作的狀態(tài)。 遠(yuǎn)程設(shè)備按時(shí)間順序?qū)⑹录斎胱侄巍?字節(jié) 0 是最近的事件。 每個(gè)新字節(jié)都會(huì)從字段中刷新最舊的字節(jié)。

      正常響應(yīng)包含一個(gè)兩字節(jié)的狀態(tài)字字段、一個(gè)兩字節(jié)的事件計(jì)數(shù)字段、一個(gè)兩字節(jié)的消息計(jì)數(shù)字段和一個(gè)包含 0-64 字節(jié)事件的字段。 字節(jié)計(jì)數(shù)字段定義了這四個(gè)字段中數(shù)據(jù)的總長(zhǎng)度。

      以下是在遠(yuǎn)程設(shè)備中獲取通信事件日志的請(qǐng)求示例:

      -------未翻譯-------

      6.11 寫多個(gè)線圈 15(0x0F)

      該功能碼用于在遠(yuǎn)程設(shè)備中強(qiáng)制線圈序列中的每個(gè)線圈打開(kāi)或關(guān)閉。 請(qǐng)求 PDU 指定要強(qiáng)制的線圈參考。 線圈從零開(kāi)始尋址。 因此編號(hào)為 1 的線圈尋址為 0。

      請(qǐng)求的開(kāi)/關(guān)狀態(tài)由請(qǐng)求數(shù)據(jù)字段的內(nèi)容指定。字段位位置的邏輯“1”請(qǐng)求相應(yīng)輸出的ON。邏輯上的“0”請(qǐng)求其關(guān)閉。

      正常響應(yīng)返回功能碼、起始地址、強(qiáng)制線圈數(shù)量。

      以下是從線圈 20 開(kāi)始寫入一系列 10 個(gè)線圈的請(qǐng)求示例:

      請(qǐng)求數(shù)據(jù)內(nèi)容為兩個(gè)字節(jié):CD 01 hex(1100 1101 0000 0001 binary)。 二進(jìn)制位對(duì)應(yīng)于以下方式的輸出:

      傳輸?shù)牡谝粋€(gè)字節(jié)(CD 十六進(jìn)制)尋址輸出 27-20,最低有效位尋址該組中的最低輸出 (20)。

      傳輸?shù)南乱粋€(gè)字節(jié)(01 十六進(jìn)制)尋址輸出 29-28,最低有效位尋址該組中的最低輸出 (28)。 最后一個(gè)數(shù)據(jù)字節(jié)中未使用的位應(yīng)填零。

      6.12 寫多個(gè)寄存器 16(0x10)

      該功能碼用于在遠(yuǎn)程設(shè)備中寫入一塊連續(xù)的寄存器(1 到 123 個(gè)寄存器)。

      請(qǐng)求的寫入值在請(qǐng)求數(shù)據(jù)字段中指定。 數(shù)據(jù)被打包為每個(gè)寄存器的兩個(gè)字節(jié)。

      正常響應(yīng)返回功能碼、起始地址和寫入的寄存器數(shù)量。

      這是一個(gè)請(qǐng)求寫入兩個(gè)寄存器的示例:

      6.13 報(bào)告服務(wù)器ID 17(0x11)

      6.14 讀取文件記錄 20(0x14)

      6.15 寫文件記錄 21(0x15)

      6.16 掩碼寫入寄存器(Mask Write Register) 22(0x16)

      該功能碼用于使用AND掩碼、OR掩碼和寄存器當(dāng)前內(nèi)容的組合來(lái)修改指定保持寄存器的內(nèi)容。 該功能可用于設(shè)置或清除寄存器中的各個(gè)位。

      該請(qǐng)求指定要寫入的保持寄存器、用作 AND 掩碼的數(shù)據(jù)以及用作 OR 掩碼的數(shù)據(jù)。 寄存器從零開(kāi)始尋址。 因此寄存器 1-16 被尋址為 0-15。

      該函數(shù)的算法為:

      結(jié)果 = (當(dāng)前內(nèi)容 AND And_Mask) OR (Or_Mask AND (NOT And_Mask))

      舉例:

      注意:

      如果 Or_Mask 值為零,則結(jié)果只是當(dāng)前內(nèi)容和 And_Mask 的邏輯與運(yùn)算。 如果 And_Mask 值為零,則結(jié)果等于 Or_Mask 值。

      可以使用讀取保持寄存器功能(功能代碼 03)讀取寄存器的內(nèi)容。 但是,它們可以在控制器掃描其用戶邏輯程序時(shí)進(jìn)行更改。

      正常響應(yīng)是請(qǐng)求的回聲。 寫入寄存器后返回響應(yīng)。

      以下是使用上述掩碼值對(duì)遠(yuǎn)程設(shè)備中的寄存器 5 進(jìn)行掩碼寫入的示例。

      6.17 讀寫多個(gè)寄存器(Read/Write Multiple registers) 23(0x17)

      6.18 讀取FIFO隊(duì)列(Read FIFO Queue) 24(0x18)

      6.19 封裝接口傳輸(Encapsulated Interface Transport ) 43(0x2B)

      6.20 CANopen General Reference Request and Response PDU 43/13(0x2B/0x0D)

      6.21 讀取設(shè)備標(biāo)識(shí) 43/14(0x2B/0x0E)

      此功能代碼僅允許讀取與遠(yuǎn)程設(shè)備的物理和功能描述相關(guān)的標(biāo)識(shí)和附加信息。

      讀取設(shè)備標(biāo)識(shí)接口被建模為由一組可尋址數(shù)據(jù)元素組成的地址空間。 數(shù)據(jù)元素稱為對(duì)象,對(duì)象 ID 標(biāo)識(shí)它們。

      該界面由 3 類對(duì)象組成:

      • 基本設(shè)備識(shí)別。此類別中的所有對(duì)象都是必填的:供應(yīng)商名稱、產(chǎn)品代碼和修訂號(hào)。
      • 常規(guī)設(shè)備識(shí)別。除了基本數(shù)據(jù)對(duì)象之外,設(shè)備還提供附加和可選的標(biāo)識(shí)和描述數(shù)據(jù)對(duì)象。此類別的所有對(duì)象都在標(biāo)準(zhǔn)中定義了,但它們的實(shí)現(xiàn)是可選的。
      • 擴(kuò)展設(shè)備標(biāo)識(shí)。除了常規(guī)數(shù)據(jù)對(duì)象外,設(shè)備還提供有關(guān)物理設(shè)備本身的附加和可選標(biāo)識(shí)和描述私有數(shù)據(jù)。 所有這些數(shù)據(jù)都依賴于設(shè)備。

      請(qǐng)求參數(shù)說(shuō)明:

      分配編號(hào) 14 的 MODBUS 封裝接口標(biāo)識(shí)讀取標(biāo)識(shí)請(qǐng)求。

      參數(shù)“讀取設(shè)備ID碼”允許定義四種訪問(wèn)類型:

      • 01: 請(qǐng)求獲取基本的設(shè)備標(biāo)識(shí)(流訪問(wèn))
      • 02: 請(qǐng)求獲取常規(guī)設(shè)備標(biāo)識(shí)(流訪問(wèn))
      • 03: 請(qǐng)求獲取擴(kuò)展設(shè)備標(biāo)識(shí)(流訪問(wèn))
      • 04: 請(qǐng)求獲取一個(gè)特定的標(biāo)識(shí)對(duì)象(個(gè)人訪問(wèn))

      如果讀取設(shè)備ID代碼為非法,則會(huì)在響應(yīng)中返回異常碼03。

      如果響應(yīng)不適合于單個(gè)響應(yīng),則必須執(zhí)行幾個(gè)事務(wù)(請(qǐng)求/響應(yīng))。對(duì)象Id字節(jié)給出了要獲取的第一個(gè)對(duì)象的標(biāo)識(shí)。對(duì)于第一個(gè)事務(wù),客戶端必須將對(duì)象Id設(shè)置為0,以獲得設(shè)備標(biāo)識(shí)數(shù)據(jù)的開(kāi)始。對(duì)于后面的事務(wù),客戶端必須將對(duì)象Id設(shè)置為服務(wù)器在上一個(gè)響應(yīng)中返回的值。

      備注:對(duì)象是不可分割的,因此任何對(duì)象的大小都必須與事務(wù)響應(yīng)的大小相一致。

      如果對(duì)象 ID 與任何已知對(duì)象都不匹配,則服務(wù)器會(huì)像指出對(duì)象 0 一樣進(jìn)行響應(yīng)(從頭重新啟動(dòng))。

      如果是單獨(dú)訪問(wèn):ReadDevId 代碼 04,請(qǐng)求中的 Object Id 給出了要獲取的對(duì)象的標(biāo)識(shí),如果 Object Id 與任何已知對(duì)象都不匹配,則服務(wù)器返回異常響應(yīng),異常代碼 = 02(非法數(shù)據(jù)地址)。

      如果服務(wù)器設(shè)備被要求提供比其符合級(jí)別更高的描述級(jí)別(讀取設(shè)備代碼),則它必須根據(jù)其實(shí)際符合級(jí)別做出響應(yīng)。

      響應(yīng)參數(shù)說(shuō)明:

      Function code 0x2B(十六進(jìn)制)
      MEI Type 14 (0x0E) MEI 類型分配給設(shè)備識(shí)別接口的編號(hào)
      ReadDevId code 與請(qǐng)求ReadDevId代碼相同:01、02、03或04
      Conformity Level符合性水平 設(shè)備的標(biāo)識(shí)一致性級(jí)別和支持的訪問(wèn)類型
      0x01:基本標(biāo)識(shí)(僅限流訪問(wèn))
      0x02:常規(guī)標(biāo)識(shí)(僅限流訪問(wèn))
      0x03:擴(kuò)展標(biāo)識(shí)(僅限流訪問(wèn))
      0x81:基本標(biāo)識(shí)(流訪問(wèn)和單獨(dú)訪問(wèn))
      0x82:常規(guī)標(biāo)識(shí)(流訪問(wèn)和單獨(dú)訪問(wèn))
      0x83:擴(kuò)展標(biāo)識(shí)(流訪問(wèn)和單獨(dú)訪問(wèn))
      More Follows 對(duì)于ReadDevId代碼01、02或03(流訪問(wèn)),如果標(biāo)識(shí)數(shù)據(jù)不適合單個(gè)響應(yīng),則可能需要多個(gè)請(qǐng)求/響應(yīng)事務(wù)。
      0x00:沒(méi)有更多的對(duì)象可用
      0xFF:其他標(biāo)識(shí)對(duì)象是可用的,需要MODBUS事務(wù)
      對(duì)于ReadDevId代碼04(單獨(dú)訪問(wèn)),此字段必須設(shè)置為00。
      Next Object Id 如果“MoreFollows = FF”,則標(biāo)識(shí)下一個(gè)要請(qǐng)求的Object。如果“MoreFollows = 00”,則必須設(shè)置為00(無(wú)用)
      Number Of Objects 響應(yīng)中返回的標(biāo)識(shí)對(duì)象數(shù)(對(duì)于單個(gè)訪問(wèn),對(duì)象數(shù) = 1)
      Object0.Id PDU 中返回的第一個(gè)對(duì)象的標(biāo)識(shí)(流訪問(wèn))或請(qǐng)求的對(duì)象(單獨(dú)訪問(wèn))
      Object0.Length 以字節(jié)表示的第一個(gè)對(duì)象的長(zhǎng)度
      Object0.Value 第一個(gè)對(duì)象的值(對(duì)象0)。長(zhǎng)度的字節(jié))
      .... ....
      ObjectN.Id 最后一個(gè)對(duì)象的標(biāo)識(shí)(在響應(yīng)范圍內(nèi))
      ObjectN.Length 最后一個(gè)對(duì)象的字節(jié)的長(zhǎng)度
      ObjectN.Value Value of the last Object (ObjectN.Length bytes)

      針對(duì)“基本設(shè)備標(biāo)識(shí)”的讀取設(shè)備識(shí)別請(qǐng)求的示例:在本例中,所有信息都在一個(gè)響應(yīng)PDU中發(fā)送。

      如果設(shè)備需要多個(gè)事務(wù)來(lái)發(fā)送響應(yīng),則會(huì)啟動(dòng)以下事務(wù)。

      第一次事務(wù):

      第二次事務(wù):

      7.MODBUS異常響應(yīng)

      當(dāng)客戶端設(shè)備向服務(wù)器設(shè)備發(fā)送請(qǐng)求時(shí),它期望得到正常響應(yīng)。 客戶端的查詢可能會(huì)發(fā)生四種可能的事件之一:

      • 如果服務(wù)器設(shè)備接收到的請(qǐng)求沒(méi)有通信錯(cuò)誤,并且可以正常處理查詢,則返回正常響應(yīng)。
      • 如果服務(wù)器由于通信錯(cuò)誤而沒(méi)有收到請(qǐng)求,則不返回任何響應(yīng)??蛻舳顺绦蜃罱K將處理該請(qǐng)求的超時(shí)條件。
      • 如果服務(wù)器接收到請(qǐng)求,但檢測(cè)到通信錯(cuò)誤(奇偶校驗(yàn)、LRC、CRC、……),則不返回任何響應(yīng)??蛻舳顺绦蜃罱K將處理該請(qǐng)求的超時(shí)條件。
      • 如果服務(wù)器接收到的請(qǐng)求沒(méi)有通信錯(cuò)誤,但不能處理它(例如,如果請(qǐng)求是讀取一個(gè)不存在的輸出或寄存器),服務(wù)器將返回一個(gè)異常響應(yīng),通知客戶端錯(cuò)誤的性質(zhì)。

      異常響應(yīng)消息有兩個(gè)字段可以將其與正常響應(yīng)區(qū)分開(kāi)來(lái):

      功能碼字段:在正常響應(yīng)中,服務(wù)器在響應(yīng)的功能碼字段中回顯原始請(qǐng)求的功能碼。 所有功能代碼的最高有效位 (MSB) 均為 0(它們的值均低于 80 十六進(jìn)制)。 在異常響應(yīng)中,服務(wù)器將功能代碼的 MSB 設(shè)置為 1。這使得異常響應(yīng)中的功能碼值比正常響應(yīng)的值高 0x80。

      通過(guò)設(shè)置功能碼的 MSB,客戶端的應(yīng)用程序可以識(shí)別異常響應(yīng),并可以檢查異常代碼的數(shù)據(jù)字段。

      數(shù)據(jù)字段:在正常響應(yīng)中,服務(wù)器可能會(huì)返回?cái)?shù)據(jù)字段中的數(shù)據(jù)或統(tǒng)計(jì)信息(請(qǐng)求中請(qǐng)求的任何信息)。 在異常響應(yīng)中,服務(wù)器在數(shù)據(jù)字段中返回異常代碼。 這定義了導(dǎo)致異常的服務(wù)器條件。

      客戶端請(qǐng)求和服務(wù)器異常響應(yīng)的示例

      在此示例中,客戶端向服務(wù)器設(shè)備發(fā)送請(qǐng)求。 功能代碼 (01) 用于讀取輸出狀態(tài)。 它請(qǐng)求地址 1185(04A1 十六進(jìn)制)處的輸出狀態(tài)。 請(qǐng)注意,僅讀取一個(gè)輸出,如輸出數(shù)量字段 (0001) 所指定。

      如果服務(wù)器設(shè)備中不存在輸出地址,則服務(wù)器將返回異常響應(yīng)并顯示異常代碼 (02)。 這指定了服務(wù)器的非法數(shù)據(jù)地址。

      異常代碼的列表

      異常碼 名稱 含義
      01 非法功能 ILLEGAL FUNCTION 查詢中收到的功能代碼不是服務(wù)器允許的操作。 這可能是因?yàn)樵摴δ艽a僅適用于較新的設(shè)備,并未在所選單元中實(shí)現(xiàn)。 它還可能表明服務(wù)器處于錯(cuò)誤狀態(tài),無(wú)法處理這種類型的請(qǐng)求,例如因?yàn)樗磁渲们冶灰蠓祷丶拇嫫髦怠?/td>
      02 非法數(shù)據(jù)地址 ILLEGAL DATA ADDRESS 查詢中收到的數(shù)據(jù)地址不是服務(wù)器允許的地址。 更具體地說(shuō),參考號(hào)和傳輸長(zhǎng)度的組合是無(wú)效的。 對(duì)于100個(gè)寄存器的控制器,PDU將第一個(gè)寄存器尋址為0,最后一個(gè)寄存器尋址為99。如果提交的請(qǐng)求起始寄存器地址為96,寄存器數(shù)量為4,則該請(qǐng)求將成功運(yùn)行( 地址至少)在寄存器 96、97、98、99 上。如果提交的請(qǐng)求的起始寄存器地址為 96,寄存器數(shù)量為 5,則此請(qǐng)求將失敗,異常代碼為 0x02“非法數(shù)據(jù)地址” 因?yàn)樗噲D對(duì)寄存器 96、97、98、99 和 100 進(jìn)行操作,并且沒(méi)有地址為 100 的寄存器。
      03 非法數(shù)據(jù)值ILLEGAL DATA VALUE 數(shù)據(jù)字段中包含的值不是服務(wù)器允許的值。 這表明復(fù)雜請(qǐng)求的其余部分的結(jié)構(gòu)存在錯(cuò)誤,例如隱含長(zhǎng)度不正確。 它具體并不意味著提交存儲(chǔ)在寄存器中的數(shù)據(jù)項(xiàng)具有超出應(yīng)用程序預(yù)期的值,因?yàn)?MODBUS 協(xié)議不知道任何特定寄存器的任何特定值的重要性。
      04 服務(wù)器設(shè)備故障SERVER DEVICE FAILURE 當(dāng)服務(wù)器試圖執(zhí)行所請(qǐng)求的操作時(shí),發(fā)生了一個(gè)不可恢復(fù)的錯(cuò)誤。
      05 確認(rèn)ACKNOWLEDGE 專門與編程命令結(jié)合使用。
      服務(wù)器已接受請(qǐng)求并正在處理它,但這樣做需要很長(zhǎng)時(shí)間。 返回此響應(yīng)是為了防止客戶端發(fā)生超時(shí)錯(cuò)誤。 客戶端接下來(lái)可以發(fā)出輪詢程序完成消息以確定處理是否完成。
      06 服務(wù)器設(shè)備繁忙SERVER DEVICE BUSY 專門與編程命令結(jié)合使用。
      服務(wù)器正在處理一個(gè)長(zhǎng)時(shí)間的程序命令。 客戶端應(yīng)該稍后在服務(wù)器空閑時(shí)重新傳輸消息。
      08 存儲(chǔ)器奇偶誤差MEMORY PARITY ERROR 專門與功能碼 20 和 21 以及引用類型 6 結(jié)合使用,以指示擴(kuò)展文件區(qū)域未能通過(guò)一致性檢查。
      服務(wù)器嘗試讀取記錄文件,但在內(nèi)存中檢測(cè)到奇偶校驗(yàn)錯(cuò)誤。 客戶端可以重試請(qǐng)求,但可能需要服務(wù)器設(shè)備上的服務(wù)。
      0A 網(wǎng)關(guān)路徑不可用GATEWAY PATH UNAVAILABLE 專門與網(wǎng)關(guān)結(jié)合使用,表示網(wǎng)關(guān)無(wú)法分配從輸入端口到輸出端口的內(nèi)部通信路徑來(lái)處理請(qǐng)求。 通常意味著網(wǎng)關(guān)配置錯(cuò)誤或過(guò)載。
      0B 網(wǎng)關(guān)目標(biāo)設(shè)備未能響應(yīng)GATEWAY TARGET DEVICE
      FAILED TO RESPOND
      專門與網(wǎng)關(guān)結(jié)合使用,表示未從目標(biāo)設(shè)備獲得響應(yīng)。 通常意味著該設(shè)備不在網(wǎng)絡(luò)上。

      附件A(信息性):MODBUS保留的功能碼、子碼和MEI類型

      下列功能碼和子碼不屬于本公開(kāi)規(guī)范的一部分,這些功能碼和子碼是專門保留的。 格式為功能碼/子碼或僅保留所有子碼(0-255)的功能碼:8/19; 8/21-65535、9、10、13、14、41、42、90、91、125、126 和 127。

      功能碼 43 及其用于設(shè)備識(shí)別的 MEI 類型 14 和用于 CANopen 通用參考請(qǐng)求和響應(yīng) PDU 的 MEI 類型 13 是本規(guī)范中當(dāng)前可用的封裝接口傳輸。

      以下功能碼和 MEI 類型不屬于本公開(kāi)規(guī)范的一部分,這些功能碼和 MEI 類型被特別保留:43/0-12 和 43/15-255。 在本規(guī)范中,不支持具有與封裝接口傳輸相同或相似結(jié)果的用戶定義功能碼。

      MODBUS是施耐德自動(dòng)化有限公司的注冊(cè)商標(biāo)。

      附件 B(資料性):CANOPEN 通用參考命令

      請(qǐng)參閱 MODBUS 網(wǎng)站或 CiA(自動(dòng)化中的 CAN)網(wǎng)站獲取涵蓋功能代碼 43 MEI 類型 13 的副本和使用條款。

      文檔翻譯自:

       

      posted @ 2023-04-16 18:41  閃亮的敦敦  Views(591)  Comments(1)    收藏  舉報(bào)
      主站蜘蛛池模板: 国产自拍在线一区二区三区| 日本免费一区二区三区| 精品国产午夜福利伦理片| 国产麻豆精品av在线观看| 洮南市| 亚洲无线码在线一区观看| 成年女人免费碰碰视频| 尹人香蕉久久99天天拍| 色综合久久久久综合体桃花网| 国产亚洲精品久久久久久无亚洲| 国产偷国产偷亚洲清高APP| 亚洲精品一二三在线观看| 国产综合久久亚洲综合| 西昌市| 亚洲成人午夜排名成人午夜| 欧美xxxx做受欧美.88| 国产偷国产偷亚洲清高动态图| 人人妻人人澡人人爽| 国产精品播放一区二区三区| 欧美视频精品免费覌看| 久久精品国产久精国产果冻传媒| 精品无码国产一区二区三区av | 亚洲精品中文字幕一二三| 国内精品久久久久影院薰衣草| 国产亚洲av手机在线观看| 自拍偷拍另类三级三色四色| 北岛玲中文字幕人妻系列| 光棍天堂在线手机播放免费| 亚洲精品三区四区成人少| 日本久久久免费高清| 国产av不卡一区二区| 激情综合五月丁香亚洲| 手机在线国产精品| 久久月本道色综合久久| 狠狠综合久久av一区二| 精品无码一区二区三区爱欲| 亚洲天堂精品一区二区| 国产一区二区三区色老头| 国产成人av大片大片| 午夜成人精品福利网站在线观看| 国产伦一区二区三区视频|