電子開發(fā)網(wǎng)

電子開發(fā)網(wǎng)電子設(shè)計 | 電子開發(fā)網(wǎng)Rss 2.0 會員中心 會員注冊
搜索: 您現(xiàn)在的位置: 電子開發(fā)網(wǎng) >> 電子開發(fā) >> plc軟件使用 >> 正文

modbus通訊協(xié)議功能碼一覽_ModBus功能碼定義

作者:佚名    文章來源:本站原創(chuàng)    點擊數(shù):    更新時間:2022-04-03

modbus通訊協(xié)議功能碼一覽_ModBus功能碼定義
Modbus網(wǎng)絡(luò)是一個工業(yè)通信系統(tǒng),由帶智能終端的可編程序控制器和計算機通過公用線路或局部專用線路連接而成。其系統(tǒng)結(jié)構(gòu)既包括硬件、亦包 括軟件。它可應(yīng)用于各種數(shù)據(jù)采集和過程監(jiān)控。下表1是ModBus的功能碼定義。
表1 ModBus功能碼
功能碼  名稱  作用
01  讀取線圈狀態(tài) 取得一組邏輯線圈的當前狀態(tài)(ON/OFF)
02  讀取輸入狀態(tài)  取得一組開關(guān)輸入的當前狀態(tài)(ON/OFF)
03  讀取保持寄存器  在一個或多個保持寄存器中取得當前的二進制值
04  讀取輸入寄存器  在一個或多個輸入寄存器中取得當前的二進制值
05  強置單線圈  強置一個邏輯線圈的通斷狀態(tài)
06  預(yù)置單寄存器  把具體二進值裝入一個保持寄存器
07  讀取異常狀態(tài)  取得8個內(nèi)部線圈的通斷狀態(tài),這8個線圈的地址由控制器決定,用戶邏輯可以將這些線圈定義,以說明從機狀態(tài),短 報文適宜于迅速讀取狀態(tài)
08  回送診斷校驗  把診斷校驗報文送從機,以對通信處理進行評鑒
09  編程(只用于484)  使主機模擬編程器作用,修改PC從機邏輯
10  控詢(只用于484)  可使主機與一臺正在執(zhí)行長程序任務(wù)從機通信,探詢該從機是否已完成其操作任務(wù),僅在含有功能碼9的報文發(fā)送后,本功能碼才發(fā)送
11  讀取事件計數(shù)  可使主機發(fā)出單詢問,并隨即判定操作是否成功,尤其是該命令或其他應(yīng)答產(chǎn)生通信錯誤時
12  讀取通信事件記錄  可是主機檢索每臺從機的ModBus事務(wù)處理通信事件記錄。如果某項事務(wù)處理完成,記錄會給出有關(guān)錯誤
13  編程(184/384 484 584)  可使主機模擬編程器功能修改PC從機邏輯
14  探詢(184/384 484 584)  可使主機與正在執(zhí)行任務(wù)的從機通信,定期控詢該從機是否已完成其程序操作,僅在含有功能13的報文發(fā)送后,本功能碼才得發(fā)送
15  強置多線圈  強置一串連續(xù)邏輯線圈的通斷
16  預(yù)置多寄存器  把具體的二進制值裝入一串連續(xù)的保持寄存器
17  報告從機標識  可使主機判斷編址從機的類型及該從機運行指示燈的狀態(tài)
18  (884和MICRO 84)  可使主機模擬編程功能,修改PC狀態(tài)邏輯
19  重置通信鏈路  發(fā)生非可修改錯誤后,是從機復(fù)位于已知狀態(tài),可重置順序字節(jié)
20  讀取通用參數(shù)(584L)  顯示擴展存儲器文件中的數(shù)據(jù)信息
21  寫入通用參數(shù)(584L)  把通用參數(shù)寫入擴展存儲文件,或修改之
22~64  保留作擴展功能備用  
65~72  保留以備用戶功能所用  留作用戶功能的擴展編碼
73~119  非法功能  
120~127  保留  留作內(nèi)部作用
128~255  保留  用于異常應(yīng)答
 
 
      Modbus網(wǎng)絡(luò)只是一個主機,所有通信都由他發(fā)出。網(wǎng)絡(luò)可支持247個之多的遠程從屬控制器,但實際所支持的從機數(shù)要由所用通信設(shè)備決定。采用這個系 統(tǒng),各PC可以和中心主機交換信息而不影響各PC執(zhí)行本身的控制任務(wù)。表2是ModBus各功能碼對應(yīng)的數(shù)據(jù)類型。
表2 ModBus功能碼與數(shù)據(jù)類型對應(yīng)表
代碼 功能 數(shù)據(jù)類型
01 讀 位
02 讀 位
03 讀 整型、字符型、狀態(tài)字、浮點型
04 讀 整型、狀態(tài)字、浮點型
05 寫 位
06 寫 整型、字符型、狀態(tài)字、浮點型
08 N/A 重復(fù)“回路反饋”信息
15 寫 位
16 寫 整型、字符型、狀態(tài)字、浮點型
17 讀 字符型
(1)ModBus的傳輸方式
 在ModBus系統(tǒng)中有2種傳輸模式可選擇。這2種傳輸模式與從機PC通信的能力是同等的。選擇時應(yīng)視所用ModBus主機而定, 每個ModBus系統(tǒng)只能使用一種模式,不允許2種模式混用。一種模式是ASCII(美國信息交換碼),另一種模式是RTU(遠程終端設(shè)備)這兩種模式的 定義見表3
 
表3 ASCII和RTU傳輸模式的特性
特性  ASCII(7位) RTU(8位)
編碼系統(tǒng)  十六進制(使用ASCII可打印字符:0~9,A~F)  二進制
每一個字符的位數(shù)  開始位  1位  1位
 數(shù)據(jù)位(最低有效位第一位)  7位  8位
 奇偶校驗(任選)  1位(此位用于奇偶校驗,無校應(yīng)則無該位)  1位(此位用于奇偶校驗,無校應(yīng)則無該位)
 停止位  1或2位  1或2位
 錯誤校驗  LRC(即縱向冗余校驗)  CRC(即循環(huán)冗余校驗)
      ASCII可打印字符便于故障檢測,而且對于用高級語言(如Fortan)編程的主計算機及主PC很適宜。RTU則適用于機器語言編程的計算機和PC主 機。
      用RTU模式傳輸?shù)臄?shù)據(jù)是8位二進制字符。如欲轉(zhuǎn)換為ASCII模式,則每個RTU字符首先應(yīng)分為高位和低位兩部分,這兩部分各含4位,然后轉(zhuǎn)換成十六進 制等量值。(https://www.dgzj.com/ 電工之家)用以構(gòu)成報文的ASCII字符都是十六進制字符。ASCII模式使用的字符雖是RTU模式的兩倍,但ASCII數(shù)據(jù)的譯瑪和處理更為容易一些, 此外,用RTU模式時報文字符必須以連續(xù)數(shù)據(jù)流的形式傳送,用ASCII模式,字符之間可產(chǎn)生長達1s的間隔,以適應(yīng)速度較快的機器。表4給出了以RTU 方式讀取整數(shù)據(jù)的例子
以RTU方式讀取整數(shù)據(jù)的例子
主機請求
地址  功能碼  第一個寄存器的高位地址  第一個寄存器的低位地址  寄存器的數(shù)量的高位  寄存器的數(shù)量的底位  錯誤校驗
01  03  00  38  00  01  XX
從機應(yīng)答
地址  功能碼  字節(jié)數(shù)  數(shù)據(jù)高字節(jié)  數(shù)據(jù)低字節(jié)  錯誤校驗
01  03  2  41  24  XX
十六進制數(shù)4124表示的十進制整數(shù)為16676,錯誤校驗值要根據(jù)傳輸方式而定。
(2)Modbus的數(shù)據(jù)校驗方式
CRC-16(循環(huán)冗余錯誤校驗)
      CRC-16錯誤校驗程序如下:報文(此處只涉及數(shù)據(jù)位,不指起始位、停止位和任選的奇偶校驗位)被看作是一個連續(xù)的二進制,其最高有效位(MSB)首選 發(fā)送。報文先與X↑16相乘(左移16位),然后看X↑16+X↑15+X↑2+1除,X↑16+X↑15+X↑2+1可以表示為二進制數(shù) 11000000000000101。整數(shù)商位忽略不記,16位余數(shù)加入該報文(MSB先發(fā)送),成為2個CRC校驗字節(jié)。余數(shù)中的1全部初始化,以免所 有的零成為一條報文被接收。經(jīng)上述處理而含有CRC字節(jié)的報文,若無錯誤,到接收設(shè)備后再被同一多項式(X↑16+X↑15+X↑2+1)除,會得到一個 零余數(shù)(接收設(shè)備核驗這個CRC字節(jié),并將其與被傳送的CRC比較)。全部運算以2為模(無進位)。
      習(xí)慣于成串發(fā)送數(shù)據(jù)的設(shè)備會首選送出字符的最右位(LSB-最低有效位)。而在生成CRC情況下,發(fā)送首位應(yīng)是被除數(shù)的最高有效位MSB。由于在運算中不 用進位,為便于操作起見,計算CRC時設(shè)MSB在最右位。生成多項式的位序也必須反過來,以保持一致。多項式的MSB略去不記,因其只對商有影響而不影響 余數(shù)。
生成CRC-16校驗字節(jié)的步驟如下:
①裝如一個16位寄存器,所有數(shù)位均為1。
②該16位寄存器的高位字節(jié)與開始8位字節(jié)進行“異或”運算。運算結(jié)果放入這個16位寄存器。
③把這個16寄存器向右移一位。
④若向右(標記位)移出的數(shù)位是1,則生成多項式1010000000000001和這個寄存器進行“異或”運算;若向右移出的數(shù)位是0,則返 回③。
⑤重復(fù)③和④,直至移出8位。
⑥另外8位與該十六位寄存器進行“異或”運算。
⑦重復(fù)③~⑥,直至該報文所有字節(jié)均與16位寄存器進行“異或”運算,并移位8次。
⑧這個16位寄存器的內(nèi)容即2字節(jié)CRC錯誤校驗,被加到報文的最高有效位。
      另外,在某些非ModBus通信協(xié)議中也經(jīng)常使用CRC16作為校驗手段,而且產(chǎn)生了一些CRC16的變種,他們是使用CRC16多項式X↑16+ X↑15+X↑2+1,單首次裝入的16位寄存器為0000;使用CRC16的反序X↑16+X↑14+X↑1+1,首次裝入寄存器值為0000或 FFFFH。
LRC(縱向冗余錯誤校驗)
      LRC錯誤校驗用于ASCII模式。這個錯誤校驗是一個8位二進制數(shù),可作為2個ASCII十六進制字節(jié)傳送。把十六進制字符轉(zhuǎn)換成二進制,加上無循環(huán)進 位的二進制字符和二進制補碼結(jié)果生成LRC錯誤校驗(參見圖)。這個LRC在接收設(shè)備進行核驗,并與被傳送的LRC進行比較,冒號(:)、回車符號 (CR)、換行字符(LF)和置入的其他任何非ASCII十六進制字符在運算時忽略不計。
表5 LRC生成范例--讀取02號從機的前8個線圈
 十六進制 二進制

地址  0  2   0000  0010
功能碼  0  1   0000  0001
起始地址高位  0  0   0000  0000
起始地址低位  0  0   0000  0000
單元數(shù)量  0  0   0000  0000
 0  8  +  0000  1000
   0000  1011
  變成補碼  1111  0101
錯誤校驗  F  5   F  5
接受PC把所有收到的數(shù)據(jù)字節(jié)(包括最后的LRC)加在一起,8位應(yīng)全部為0(注意:和可能超過8位,應(yīng)略去最低位)     
                                                                0000  0010
    0000  0001
    0000  0000
    0000  0000
    0000  0000
    0000  1000
  錯誤校驗  1111  0101
   和  0000  0000

Tags:modbus,通訊協(xié)議,功能碼  
責任編輯:admin
  • 上一篇文章:
  • 下一篇文章: 沒有了
  • 請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
    1分 2分 3分 4分 5分

    還可以輸入 200 個字
    [ 查看全部 ] 網(wǎng)友評論
    關(guān)于我們 - 聯(lián)系我們 - 廣告服務(wù) - 友情鏈接 - 網(wǎng)站地圖 - 版權(quán)聲明 - 在線幫助 - 文章列表
    返回頂部
    刷新頁面
    下到頁底
    晶體管查詢
    色多多视频在线| 欧美怡红院成免费人忱友; | 麻豆AV一区二区三区久久| 国产激情з∠视频一区二区| 18禁网站免费无遮挡无码中文| 国产精品国产三级国产a| 18到20女人一级毛片| 国产成人精品一区二区三区无码| 蜜臀av性久久久久蜜臀aⅴ| 国产乱码一区二区三区| 精品无码av无码免费专区| 午夜老司机免费视频| 狂野欧美激情性xxxx| 交换配乱吟粗大SNS84O| 欧美激情videos| 亚洲国产高清人在线| 日韩大片高清播放器好| 久久婷婷人人澡人人爱91| 手机在线看片国产| 两个人看的视频www在线高清| 天天干天天摸天天操| 99久久精品这里只有精品| 国产精品入口麻豆免费| 香蕉大战欧美在线看黑人| 国产乱子伦视频在线观看| 窝窝影院午夜看片| 人妻精品久久久久中文字幕69 | 国产a不卡片精品免费观看| 男女下面进入拍拍免费看| 亚洲视频一区二区三区四区 | 欧美一区二区三区久久综| 五月综合激情网| 成年网站免费观看| 一本色道久久88亚洲精品综合| 国产麻豆天美果冻无码视频| 黄页网站在线视频免费| 国产人妖xxxx做受视频| 粗大挺进朋友孕妇| 亚洲精品国产精品国自产观看 | 国产精品igao视频| 色婷五月综激情亚洲综合|