此協議適用于無線測控系統中主站與分站之前的數據傳輸協議,如下圖所示的綠色部分的通信。
協議規定
1. 當分站收到主站的數據請求時,必須要在1秒以內作出響應。
2. 該協議是通過包傳輸的,串口是以3.5T無數據為包結束條件,例如在串口波特率1200bp/s下,傳輸3.5個數據所需的時間大約為30ms(即3.5T為30ms),收到一個數據開始計時,如果收到這個數據后30ms內沒有再收到下一個數據,則認為此包結束,這個數據就是這個包的最后一個數據,之前所收到的所有數據就是這包的內容。
3. 協議采用CRC-16校驗(生產多項式x16+x15+ x2+1,簡記式為8005),校驗失敗后這包丟棄不做協議解析。
4. 超時重發機制由主站完成,分站無此機制。
5. 傳輸的字節序采用“little endian”方式,即我們通常所說的小端朝前(Intel的x86系列CPU結構),這意味著當發射多個字節時,首先發送最低有效位。例要發送一個整形數據(兩個字節)內容為0x1234,就先發送的低字節為0x34, 然后再0x12,同理浮點型的四個數據也是如此發送。協議中所有的數據都是采用這種字節序。
每個通信的數據包都有捷麥標示頭、通信頭和請求或響應內容三部分組成,如下圖所示:
捷麥標示頭有兩種協議頭,普通采集與響應類型和分站主動上傳這兩種類型,無論哪種類型,捷麥標示頭固定為6個字節。具體內容如下:
普通采集與響應的標示頭為:4F 3F 2F 1F 5F 6F
通信頭的數據長度是固定的,一共是18格字節,包含的內容如下圖所示:
標示此包數據是哪個設備或者應用的,固定為兩個字節。
例如P5037設備的設備號為 10 01,站點測試應用的應用號為 00 05。
包標示從0開始,請求和響應的包標示相同。新包在原有包標示的基礎上加1。重發時包標示不變(主站對包標示進行加1操作,分站響應時,包標示不做任何處理)。占兩個字節
包長的實際數值是請求或響應的數據的字節數量,也就是上面協議整體組成示意圖中的藍色部分的字節數量,占兩個字節(字節序低字節在前)。
類型碼 | 定義 | 方向 | 備注 |
00H | 請求 | 主站→分站 | 對分站點的CPU模塊 |
80H | 應答 | 分站→主站 | |
02H | 請求 | 主站→分站 | 對分站點的通信管理模塊的存儲器 |
82H | 有存儲內容應答 | 分站→主站 | 當無存儲內容時包長為0,無綠色部分 |
84H | 主動上傳 | 分站→主站 | |
04H | 主動上傳的響應 | 主站→分站 | |
05H | 主動上傳的響應并接下來有請求 | 主站→分站 |
路徑占三個字節,表示這包數據的傳輸路徑,用于電臺在中繼時的協議支持。缺省值(不使用中繼)為 EF FF F0 。
24位(三個字節)的路徑信息中前2個字節表示數據的路徑信息。每一級路徑用4位二進制表示。這4位表示在這一級上中轉站的編號。如果這個站是中轉站其編號范圍是0―D。共可表達4級樹形路徑。第三個字節的后4位表示數據傳遞的當前路徑級數。用F表示對應的字段無內容。用E表示樹形結構的終點。數據的結構如下:
備用占兩個字節,用于協議擴展,缺省值為0x00 0x00。
目的地址表示數據包的目的。源地址表示數據的來源。每個請求數據中的請求對應著響應數據中的一個響應。請求和響應是成對出現的。
在一個系統中,每一個分站和主站都有唯一的地址。
地址用兩個字節表示,字節序采用低字節在前,比如一個分站的地址為12,那么地址表示為:0C 00。
通信頭部分的CRC校驗,也就是灰色部分的數據CRC,不包含“捷麥標示頭”部分和“請求或響應數據”部分。
該協議一包可以獲取不同數據類型的數據,獲取的這一小段稱為數據段,請求和響應的協議格式如下圖所示:
注意請求內容或者響應內榮包中的“內容”字段的長度依據功能碼等,可能有些功能碼沒有“內容”字段。
請求(響應)總個數:表示數據段的總個數,段數的最大值為20,請求和響應是一一對應。
數據段:每一個數據段都是由序號、功能碼、地址偏移、寄存器數和內容構成。序號是從1依次增加的,功能碼等參加下文。
內容校驗:內容CRC是指對包內容(請求或者響應內容)做CRC處理,不包含“捷麥標示頭”部分和“通信頭”部分。
功能碼定義匯總
數據類型 | 名稱 | 功能碼意義 | 功能碼(HEX) | 主->主 | |
數據訪問 | 1位訪問 | 物理離散輸入 | 讀離散輸入 | 02 | 42/82 |
物理繼電器 | 讀離散輸出 | 01 | 41/81 | ||
寫離散輸出 | 0F | 4F/8F | |||
8位訪問 | 單字節寄存器 | 讀字節輸入寄存器 | 33 | 73/B3 | |
讀字節輸出寄存器 | 34 | 74/B4 | |||
寫字節輸出寄存器 | 35 | 75/B5 | |||
16位訪問 | 整形寄存器 | 讀整形輸入寄存器 | 04 | 44/84 | |
讀整形輸出寄存器 | 03 | 43/83 | |||
寫整形輸出寄存器 | 10 | 50/90 | |||
32位訪問 | 實數寄存器 | 讀實數輸入寄存器 | 36 | 76/B6 | |
讀實數輸出寄存器 | 37 | 77/B7 | |||
寫實數輸出寄存器 | 38 | 78/B8 |
01功能代碼是遠程設備用來讀取離散輸出的1~2000鄰近狀態。請求協議數據單元詳細說明了離散輸出的起始地址和離散輸出的個數。離散輸出的地址從0開始。
響應信息中的離散輸出被按字節打包,數據字節的每一位都有一個離散輸出與之相對應。狀態1=ON,0=OFF。起始地址的內容被放入數據第一字節的最低有效位,依次類推。
如果返回輸出的位數不是8的倍數,剩余高位用0補。計數字節詳細記錄了完整數據字節的數量。
請求協議數據單元
功能代碼 | 1字節 | 0x01 |
起始地址 | 2字節 | 0x0000到0xFFFF |
感應器數量 | 2字節 | 1到2000(0x7D0) |
響應協議數據單元
功能代碼 | 1字節 | 0x01 |
起始地址 | 2字節 | 0x0000到0xFFFF |
感應器數量 | 2字節 | 1到2000(0x7D0) |
感應器狀態 | n字節 | n=N或者N+1 |
N*=輸出量/8,如果剩余量不為0,則N=N+1
下面舉一個例子是關于請求讀離散輸出(20-38):
請求 | 響應 | ||
字段名稱 | (Hex) | 字段名稱 | (Hex) |
功能 起始地址低位 起始地址高位 輸出位數的低位 輸出位數的高位
| 01 | 功能 起始地址低位 起始地址高位 輸出位數的低位 輸出位數的高位 27-20的輸出狀態 35-28的輸出狀態 38-36的輸出狀態 | 01 |
13 | 13 | ||
00 | 00 | ||
13 | 13 | ||
00 | 00 | ||
CD | |||
6B | |||
05 |
十六進制數CD或二進制數1100 1101包含了輸出位27的狀態“1”。輸出位27是這個字節的最高位,輸出位20為這個字節的最地位。
在通常的情況下,一個字節的左邊是最高有效位,右邊是最低有效位。這樣輸出的第一個字節從左邊到右邊依次是位27到20,下一個字節從左到右依次是位35到28。當傳輸這些輸出狀態時,從最低有效位到最高有效位:20…27,28…35依次類推。
在最后一個字節,十六進制數05或二進制數0000 0101是輸出位38-36的狀態。輸出位38是從左邊開始數的第六位,輸出位36是這個字節的最低位。剩余的五個高位用0補。
注意:剩余的五個位(高位)用0補。
功能代碼是遠程安裝設備驅動程序用來讀取離散輸入的1~2000個鄰近狀態。請求PDU詳細說明了離散輸入的起始地址,第一個離散輸入的地址域和離散輸入的個數。離散輸入的地址從0開始,因此,離散輸入感應器1-16的地址為0-15。
響應信息中的離散輸入被按字節打包,數據字節的每一位都有一個離散輸入與之相對應。狀態1=ON,0=OFF。起始地址的內容被放入數據第一字節的最低有效位,依次類推。
如果返回輸出的位數不是8的倍數,剩余高位用0補。計數字節詳細記錄了完整數據字節的數量。
請求協議數據單元
功能代碼 | 1字節 | 0x02 |
起始地址 | 2字節 | 0x0000到0xFFFF |
輸入量 | 2字節 | 1到2000(0x7D0) |
響應協議數據單元
功能代碼 | 1字節 | 0x02 |
起始地址 | 2字節 | 0x0000到0xFFFF |
輸入量 | 2字節 | 1到2000(0x7D0) |
感應器狀態 | N*×1字節 |
N*=輸出量/8,如果剩余量不為0,則N=N+1
下面舉一個例子是關于請求讀離散輸入(197-218):
請求 | 響應 | ||
字段名稱 | (Hex) | 字段名稱 | (Hex) |
功能 起始地址低位 起始地址高位 輸入位數的低位 輸入位數的高位
| 02 | 功能 起始地址高位 起始地址低位 輸入位數的高位 輸入位數的低位204-197的輸入狀態 212-205的輸入狀態 218-213的輸入狀態 | 02 |
C4 | C4 | ||
00 | 00 | ||
16 | 16 | ||
00 | 00 | ||
AC | |||
DB | |||
35 |
從十六進制數AC或二進制數1010 1100中可以讀出離散輸入204-197的狀態,輸入位204是這個字節最高位,197是這個字節的最低位。
從十六進制數35或二進制數0011 0101中可以讀出離散輸入204-197的狀態,輸入位218是字節從左邊數的第三位,輸入位213是這個字節的最低位
注意:剩余的兩位(高位)用0補
這個功能代碼是遠程設備用來確定離散輸出序列中的離散輸出的ON或OFF狀態。請求協議數據單元詳細說明了離散輸出的起始地址和輸出數量。離散輸出的地址是從0開始的,因此離散輸出1的地址為0。
在請求協議數據單元詳細說明了請求狀態ON或OFF。這個區域的相應位為邏輯“1”時,對應的輸出為ON,邏輯“0”對應OFF。
正常的響應返回功能代碼,起始地址和對應離散輸出的數量。
請求協議數據單元
功能代碼 | 1字節 | 0FH |
起始地址 | 2字節 | 0000H到007FH |
輸出數量 | 2字節 | 0001H到0080H |
輸出值 | N*×1字節 |
N*=輸出量/8,如果剩余量不為0,則N=N+1
響應協議數據單元
功能代碼 | 1字節 | 0FH |
起始地址 | 2字節 | 0000H到007FH |
輸出數量 | 2字節 | 0001H到0080H |
下面舉一個例子,寫一連串的10個離散輸出,從離散輸出20開始
被傳輸的數據的第一字節CD是存儲器碼為27-20的狀態,最低位表達的是離散輸出20的狀態,下一字節存儲器碼為29-28的狀態,最低位表達的是離散輸出28的狀態。在最后一字節沒有用到的位用0補。
請求 | 響應 | ||
字段名稱 | (Hex) | 字段名稱 | (Hex) |
功能 起始地址低位 起始地址高位 輸出數量低位 輸出數量高位 27-20的狀態 29-28的狀態 | 0F | 功能 起始地址低位 起始地址高位 輸出數量低位 輸出數量高位
| 0F |
13 | 13 | ||
00 | 00 | ||
0A | 0A | ||
00 | 00 | ||
CD | |||
01 |
這個功能代碼是用來讀遠程設備相鄰的字節輸入寄存器塊。請求協議數據單元詳細說明了寄存器的起始地址和讀出數量。每個寄存器為一個字節。正常的的響應會返回功能代碼,起始地址和讀出的寄存器的數量及內容。
請求協議數據單元
功能代碼 | 1字節 | 33H |
起始地址 | 2字節 | 0000H到13FFH |
數據字節個數 | 2字節 | 1到400(0001-190H) |
響應協議數據單元
功能代碼 | 1字節 | 33H |
起始地址 | 2字節 | 0000H到13FFH |
數據字節個數 | 2字節 | 1到400(0001-190H) |
數據 | N*字節 |
N*=數據字節個數
下面這個例子是讀從字節寄存器2開始讀內容為00 0A 01 02到寄存器,:
請求 | 響應 | ||
字段名稱 | (Hex) | 字段名稱 | (Hex) |
功能 | 33 | 功能 | 33 |
起始地址低位 | 01 | 起始地址低位 | 01 |
起始地址高位 | 00 | 起始地址高位 | 00 |
數據字節低位 | 04 | 數據字節低位 | 04 |
數據字節高位 | 00 | 數據字節高位 | 00 |
數據值VB00001 數據值VB00002 數據值VB00003 數據值VB00004 | 00 0A 01 02 |
這個功能代碼是用來讀遠程設備相鄰的字節輸出寄存器塊。請求協議數據單元詳細說明了寄存器的起始地址和讀出數量。每個寄存器為一個字節。正常的的響應會返回功能代碼,起始地址和讀出的寄存器的數量及內容。
請求協議數據單元
功能代碼 | 1字節 | 34H |
起始地址 | 2字節 | 0000H到13FFH |
數據字節個數 | 2字節 | 1到400(0001-190H) |
響應協議數據單元
功能代碼 | 1字節 | 34H |
起始地址 | 2字節 | 0000H到13FFH |
數據字節個數 | 2字節 | 1到400(0001-190H) |
數據 | N*字節 |
N*=數據字節個數
下面這個例子是讀從字節寄存器2開始讀內容為00 0A 01 02到寄存器,:
請求 | 響應 | ||
字段名稱 | (Hex) | 字段名稱 | (Hex) |
功能 | 34 | 功能 | 34 |
起始地址低位 | 01 | 起始地址低位 | 01 |
起始地址高位 | 00 | 起始地址高位 | 00 |
數據字節低位 | 04 | 數據字節低位 | 04 |
數據字節高位 | 00 | 數據字節高位 | 00 |
數據值VB00001 數據值VB00002 數據值VB00003 數據值VB00004 | 00 0A 01 02 |
這個功能代碼是遠程設備用來寫相鄰的字節輸出寄存器塊。請求協議數據單元詳細說明了寄存器的起始地址和輸出數量。每個寄存器為一個字節。正常的的響應會返回功能代碼,起始地址和寫入的寄存器的數量。
請求協議數據單元
功能代碼 | 1字節 | 35H |
起始地址 | 2字節 | 0000H到13FFH |
數據字節個數 | 2字節 | |
數據 | N*字節 |
N*=數據字節個數
響應協議數據單元
功能代碼 | 1字節 | 35H |
起始地址 | 2字節 | 0000H到13FFH |
數據字節個數 | 2字節 | 1到400(0001-190H) |
下面這個例子是寫00 0A 01 02到寄存器,從字節寄存器2開始:
請求 | 響應 | ||
字段名稱 | (Hex) | 字段名稱 | (Hex) |
功能 | 35 | 功能 | 35 |
起始地址低位 | 01 | 起始地址低位 | 01 |
起始地址高位 | 00 | 起始地址高位 | 00 |
數據字節低位 | 04 | 數據字節低位 | 04 |
數據字節高位 | 00 | 數據字節高位 | 00 |
數據值VB00001 | 00 | ||
數據值VB00002 | 0A | ||
數據值VB00003 | 01 | ||
數據值VB00004 | 02 |
這個功能代碼是用來讀遠程設備相鄰的整形(int雙字節)輸入寄存器塊。請求協議數據單元詳細說明了寄存器的起始地址和讀出數量。每個寄存器為兩個字節。正常的的響應會返回功能代碼,起始地址和讀出的寄存器的數量及內容。
請求協議數據單元
功能代碼 | 1字節 | 04H |
起始地址 | 2字節 | 0000H到13FFH |
寄存器個數 | 2字節 | 1到400(0001-190H) |
響應協議數據單元
功能代碼 | 1字節 | 04H |
起始地址 | 2字節 | 0000H到13FFH |
寄存器個數 | 2字節 | 1到400(0001-190H) |
數據 | N*字節 |
N*=數據字節個數*2
下面這個例子是讀從整形寄存器2開始讀內容為00 0A和01 02到寄存器,:
請求 | 響應 | ||
字段名稱 | (Hex) | 字段名稱 | (Hex) |
功能 | 04 | 功能 | 04 |
起始地址低位 | 01 | 起始地址低位 | 01 |
起始地址高位 | 00 | 起始地址高位 | 00 |
寄存器個數低位 | 02 | 寄存器個數低位 | 02 |
寄存器個數高位 | 00 | 寄存器個數高位 | 00 |
數據值ViD2低字節 數據值VID2高字節 數據值VID3低字節 數據值VID3高字節 | 00 0A 01 02 |
這個功能代碼是用來讀遠程設備相鄰的整形(int雙字節)輸出寄存器塊。請求協議數據單元詳細說明了寄存器的起始地址和讀出數量。每個寄存器為兩個字節。正常的的響應會返回功能代碼,起始地址和讀出的寄存器的數量及內容。
請求協議數據單元
功能代碼 | 1字節 | 03H |
起始地址 | 2字節 | 0000H到13FFH |
寄存器個數 | 2字節 | 1到400(0001-190H) |
響應協議數據單元
功能代碼 | 1字節 | 03H |
起始地址 | 2字節 | 0000H到13FFH |
寄存器個數 | 2字節 | 1到400(0001-190H) |
數據 | N*字節 |
N*=數據字節個數*2
下面這個例子是讀從整形輸出寄存器2開始讀內容為00 0A和01 02到寄存器,:
請求 | 響應 | ||
字段名稱 | (Hex) | 字段名稱 | (Hex) |
功能 | 03 | 功能 | 03 |
起始地址低位 | 01 | 起始地址低位 | 01 |
起始地址高位 | 00 | 起始地址高位 | 00 |
寄存器個數低位 | 02 | 寄存器個數低位 | 02 |
寄存器個數高位 | 00 | 寄存器個數高位 | 00 |
數據值VOD2低字節 數據值VOD2高字節 數據值VOD3低字節 數據值VOD3高字節 | 00 0A 01 02 |
這個功能代碼是用來寫遠程設備相鄰的整形(int雙字節)輸出寄存器塊。請求協議數據單元詳細說明了寄存器的起始地址和讀出數量。每個寄存器為兩個字節。正常的的響應會返回功能代碼,起始地址和讀出的寄存器的數量及內容。
請求協議數據單元
功能代碼 | 1字節 | 10H |
起始地址 | 2字節 | 0000H到13FFH |
寄存器個數 | 2字節 | 1到400(0001-190H) |
數據 | N*字節 |
N*=數據字節個數*2
響應協議數據單元
功能代碼 | 1字節 | 10H |
起始地址 | 2字節 | 0000H到13FFH |
寄存器個數 | 2字節 | 1到400(0001-190H) |
下面這個例子是讀從整形輸出寄存器2開始讀內容為00 0A和01 02到寄存器:
請求 | 響應 | ||
字段名稱 | (Hex) | 字段名稱 | (Hex) |
功能 | 10 | 功能 | 10 |
起始地址低位 | 01 | 起始地址低位 | 01 |
起始地址高位 | 00 | 起始地址高位 | 00 |
寄存器個數低位 | 02 | 寄存器個數低位 | 02 |
寄存器個數高位 | 00 | 寄存器個數高位 | 00 |
數據值VOD2低字節 數據值VOD2高字節 數據值VOD3低字節 數據值VOD3高字節 | 00 0A 01 02 |
這個功能代碼是用來讀遠程設備相鄰實數(float,四字節,IEE754標準)輸入寄存器塊。請求協議數據單元詳細說明了寄存器的起始地址和讀出數量。每個寄存器為四個字節。正常的的響應會返回功能代碼,起始地址和讀出的寄存器的數量及內容。
請求協議數據單元
功能代碼 | 1字節 | 36H |
起始地址 | 2字節 | 0000H到13FFH |
數據字節個數 | 2字節 | 1到400(0001-190H) |
響應協議數據單元
功能代碼 | 1字節 | 36H |
起始地址 | 2字節 | 0000H到13FFH |
數據字節個數 | 2字節 | 1到400(0001-190H) |
數據 | N*字節 |
N*=數據字節個數*4
下面這個例子是讀從整形寄存器2開始讀內容為3.14和3.15到寄存器,:
請求 | 響應 | ||
字段名稱 | (Hex) | 字段名稱 | (Hex) |
功能 | 36 | 功能 | 36 |
起始地址低位 | 01 | 起始地址低位 | 01 |
起始地址高位 | 00 | 起始地址高位 | 00 |
寄存器個數低位 | 02 | 寄存器個數低位 | 02 |
寄存器個數高位 | 00 | 寄存器個數高位 | 00 |
數據值ViF2字節1 數據值ViF2字節2 數據值ViF2字節3 數據值ViF2字節4 數據值ViF3字節1 數據值ViF3字節2 數據值ViF3字節3 數據值ViF3字節4 | C3 F5 48 40 9A 99 49 40 |
這個功能代碼是用來讀遠程設備相鄰實數(float,四字節,IEE754標準)輸出寄存器塊。請求協議數據單元詳細說明了寄存器的起始地址和讀出數量。每個寄存器為四個字節。正常的的響應會返回功能代碼,起始地址和讀出的寄存器的數量及內容。
請求協議數據單元
功能代碼 | 1字節 | 37H |
起始地址 | 2字節 | 0000H到13FFH |
數據字節個數 | 2字節 | 1到400(0001-190H) |
響應協議數據單元
功能代碼 | 1字節 | 37H |
起始地址 | 2字節 | 0000H到13FFH |
數據字節個數 | 2字節 | 1到400(0001-190H) |
數據 | N*字節 |
N*=數據字節個數*4
下面這個例子是讀從整形寄存器2開始讀內容為3.14和3.15到寄存器,:
請求 | 響應 | ||
字段名稱 | (Hex) | 字段名稱 | (Hex) |
功能 | 37 | 功能 | 37 |
起始地址低位 | 01 | 起始地址低位 | 01 |
起始地址高位 | 00 | 起始地址高位 | 00 |
寄存器個數低位 | 02 | 寄存器個數低位 | 02 |
寄存器個數高位 | 00 | 寄存器個數高位 | 00 |
數據值VOF2字節1 數據值VOF2字節2 數據值VOF2字節3 數據值VOF2字節4 數據值VOF3字節1 數據值VOF3字節2 數據值VOF3字節3 數據值VOF3字節4 | C3 F5 48 40 9A 99 49 40 |
這個功能代碼是用來寫遠程設備相鄰實數(float,四字節,IEE754標準)輸出寄存器塊。請求協議數據單元詳細說明了寄存器的起始地址和寫的數量和內容。每個寄存器為四個字節。正常的的響應會返回功能代碼,起始地址和讀出的寄存器的數量及內容。
請求協議數據單元
功能代碼 | 1字節 | 38H |
起始地址 | 2字節 | 0000H到13FFH |
數據字節個數 | 2字節 | 1到400(0001-190H) |
數據 | N*字節 |
N*=數據字節個數*4
響應協議數據單元
功能代碼 | 1字節 | 38H |
起始地址 | 2字節 | 0000H到13FFH |
數據字節個數 | 2字節 | 1到400(0001-190H) |
N*=數據字節個數*4
下面這個例子是寫從整形寄存器2開始內容為3.14和3.15到寄存器上,:
請求 | 響應 | ||
字段名稱 | (Hex) | 字段名稱 | (Hex) |
功能 | 38 | 功能 | 38 |
起始地址低位 | 01 | 起始地址低位 | 01 |
起始地址高位 | 00 | 起始地址高位 | 00 |
寄存器個數低位 | 02 | 寄存器個數低位 | 02 |
寄存器個數高位 | 00 | 寄存器個數高位 | 00 |
數據值VOF2字節1 數據值VOF2字節2 數據值VOF2字節3 數據值VOF2字節4 數據值VOF3字節1 數據值VOF3字節2 數據值VOF3字節3 數據值VOF3字節4 | C3 F5 48 40 9A 99 49 40 |
各種類型碼還有兩個碼+0x40和0x80的類型碼(例如0x01碼變成0x41和0x81,0x0F變成0x4F和0x8F),他們的語法是一樣處理的。只有一下不同:
當發送出去的數據包是0x40碼類型時,捷麥標示頭自動變成4F 3F 2F 1F 5F 5F的主動上傳標示頭,包類型字段變成84的主動上傳字段。(其他的處理邏輯跟普通的下至數據一樣處理)。
當收到的數據包類型是這種0x40碼類型時,將數據內容解析出來,然后將內容更新到自身對應的0x80碼類型的變量上,然后進行相應的響應,(標示頭自動變成主動上傳頭,包類型字段變成04的主動上傳響應字段)(其他的處理邏輯跟普通的采集數據包響應一樣處理)。
0x80碼是采集變量(只讀變量),采集周期為0。
(假設分配的設備號為25 7D,包標示為5,中心站的地址為0,請求的分站為7,獲得整形輸入的數據)
主站完整的數據請求包為:
4F 3F 2F 1F 5F 6F 25 7D 05 00 09 00 00 EF FF F0 00 00 07 00 00 00 F6 08 01 01 04 00 00 02 00 FA B1
從站完整的數據響應包為:
4F 3F 2F 1F 5F 6F 25 7D 05 00 0D 00 80 EF FF F0 00 00 00 00 07 00 03 6B 01 01 04 13 00 02 00 12 34 56 78 1B CB
(假設分配的設備號為25 7D,包標示為5,中心站的地址為0,分站為7,獲得整形輸入的數據和讀離散輸出)
主站完整的數據請求包為:
4F 3F 2F 1F 5F 6F 25 7D 05 00 0F 00 00 EF FF F0 00 00 07 00 00 00 FE 00 02 01 04 00 00 02 00 02 01 00 00 09 00 57 F1
從站完整的數據響應包為:
4F 3F 2F 1F 5F 6F 25 7D 05 00 15 00 80 EF FF F0 00 00 00 00 07 00 21 7B 02 01 04 00 00 02 00 12 34 56 78 02 01 00 00 09 00 D7 01 72 82