ModBus協議簡單筆記

modbus 協議簡介

包結構如下:

modbus數據包={
    uint8 地址
    {請求|響應|出錯響應} 載荷
    uint16 CRC16
}

或者用如下方式表示:

modbus數據包={
    uint8 地址
    uint8 功能代碼
    可變域 數據
}

載荷 結構爲:

請求={
    uint8 功能代碼
    uint16 請求數據
}

響應={
    uint8 功能代碼
    uint16 響應數據
}

出錯響應={
    uint8 功能代碼
    uint16 出錯代碼
}

常用功能碼:

公共功能代碼={
    01: 讀線圈
    02: 讀書如離散量
    03: 讀多個寄存器
    04: 讀輸入寄存器
    05: 寫單個線圈
    06: 寫單個寄存器
    15: 寫多個線圈
    16: 寫多個寄存器
    23: 讀寫多個寄存器
    43 14:讀設備識別碼
}

讀線圈請求過程(01)={
    請求={
            功能代碼=0x01
            起始地址=[0x0000,0xFFFF]
            線圈數量=[1,0x7d0]=[1,2000]
        }

    響應={
            功能代碼=0x01
            響應字節數量=輸出數量/8,向上取整
            線圈狀態={s1,s2,...,sn}
        }

    出錯={
            功能代碼=0x80+0x01
            錯誤代碼={1|2|3|4}
        }
}

錯誤代碼={
        1: 不支持的功能碼
        2:數量異常(溢出)
        3:地址異常(溢出)
        4:內部出錯
}

讀保持寄存器請求過程(0x03)={
    ...
    寄存器數量=[1,125]
    ...
}

地址空間:

address={
    0: 廣播地址
    [1,247]:單播地址
    [248,255]:保留地址
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章