當前位置:
首頁 > 知識 > ModBus用戶自定義文件讀寫功能

ModBus用戶自定義文件讀寫功能

功能分類

公共功能碼

  • 是較好地被定義的功能碼,
  • 保證是唯一的,
  • MODBUS 組織可改變的,
  • 公開證明的,
  • 具有可用的一致性測試,
  • MB IETF RFC 中證明的,
  • 包含已被定義的公共指配功能碼和未來使用的未指配保留供功能碼。

用戶定義功能碼

  • 有兩個用戶定義功能碼的定義範圍,即 65 至 72 和十進位 100 至 110。
  • 用戶沒有 MODBUS 組織的任何批准就可以選擇和實現一個功能碼
  • 不能保證被選功能碼的使用是唯一的。
  • 如果用戶要重新設置功能作為一個公共功能碼,那麼用戶必須啟動 RFC,以便將改變引入公共分類中,並且指配一個新的公共功能碼。

保留功能碼

  • 一些公司對傳統產品通常使用的功能碼,並且對公共使用是無效的功能碼。

ModBus用戶自定義文件讀寫功能

(0x03)讀多個寄存器

發送

地址域功能碼起始地址寄存器數量CRC0x050x030x10000x0001crcL crcH

回復

地址域功能碼位元組數寄存器值CRC0x050x030x020x0001crcL crcH

(0x10)寫多個寄存器

發送

地址域功能碼起始地址寄存器數量位元組數寄存器值CRC0x050x100x00000x00010x020x0001crcL crcH

回復

地址域功能碼起始地址寄存器數量CRC0x050x100x00000x0001crcL crcH

(0x14)讀文件記錄

發送

地址域功能碼位元組數參考類型文件號記錄號記錄長度CRC0x050x140x060x060x00010x00010x0002crcL crcH

回復

地址域功能碼響應數據長度文件響應長度參考類型記錄數據CRC0x050x140x070x050x06xx xx xx xxcrcL crcH

(0x15)寫文件記錄

發送

地址域功能碼請求數據長度參考類型文件號記錄號記錄長度記錄數據CRC0x050x150x0a0x060x00010x00010x0002xx xxcrcL crcH

回復

地址域功能碼請求數據長度參考類型文件號記錄號記錄長度記錄數據CRC0x050x150x0a0x060x00010x00010x0002xx xxcrcL crcH

有感於ModBus的文件讀寫文件功能有點怪異和不合理

1. 寫文件功能不合理,發送和回復是一樣的

2. 參考類型定死了0x06,不清楚其作用。

而且ModBus 256位元組的限制,導致讀寫速度很慢,所以想自己擴展ModBus讀寫文件功能。

(0x44)自定義讀文件

發送

地址域功能碼文件號記錄號記錄包長度記錄長度CRC0x050x440x00010x00010x04000x0002crcL crcH

回復

地址域功能碼記錄長度記錄數據CRC0x050x440x0002xx xxcrcL crcH

(0x45)自定義寫文件

發送

地址域功能碼文件號記錄號記錄包長度記錄長度記錄數據CRC0x050x450x00010x00010x04000x0002xx xxcrcL crcH

回復

地址域功能碼文件號記錄號記錄包長度記錄長度CRC0x050x450x00010x00010x04000x0001crcL crcH

N個文件,通過文件號來區分(0x0000~0xFFFF)

1個文件分成N包來讀寫,通過記錄號來區分(0x0000~0xFFFF)

每個記錄包的長度大小固定,通過記錄包長度來區分(0x0000~0xFFFF)

而實際當次讀寫的長度,定義為記錄長度。

ModBus用戶自定義文件讀寫功能

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序員小新人學習 的精彩文章:

查看linux版本及lsb release安裝及一些想法
使用jenkins搭建自動化打包的apk 下載

TAG:程序員小新人學習 |