初出茅廬的小李第20篇博客之modbus協議雜記

地址+ 數據 (功能碼+數據)+校驗
m把設備抽象化
四類
輸入離散量 (單個bit操作)
線圈(單個bit操作)
保持寄存器(16bit 操作oled)
輸入寄存器(16bit DHT11 MQ2 MQ135)

想要實現功能用功能碼

公共功能碼
用戶定義功能碼
保留功能
串行數據上的數據格式:RTU \ASCII

RTU:節點地址+功能碼+數據+CRC校驗
保證地址唯一:用芯片ID校驗出來的,也可以做成協議自動分配
功能碼:03碼
數據:1-253
CRC:2個字節

如何確認和那一個設備進行的通信
如何獲取設備號?
主機要獲取所有節點的ID,採用廣播的形式進行通信
可以自定義一個功能碼
廣播 地址0 +功能碼0x00(自定義功能碼)+數據0X00(不要數據直接放0x00)+CRC
廣播後如何接受不同節點的回傳
要解決總線競爭的問題,一個方式做協議
一個是用延時,分時複用總線
設備號 延時時間
主從機進行通信
主機結構用485接口,+485驅動
編寫其發送函數
編寫接收函數(串口中斷保證實時性+定時器的溢出中斷(t3.5))
總線通訊
獲取總線上節點地址
主機發送0x00 +0x00+0x00+CRC_L+CRC_H
廣播地址自定義功能碼數據校驗
從機迴應
id +0x00+0x00+CRC_L+CEC_H
設備號 +功能碼+數據+校驗
獲取節點的數據
溫度 溼度 煙霧 空氣質量 光照強度 紅外狀態 人員有否

主機發送
設備號 ID+ 0x03(功能碼)+數據 0x00+寄存器起始地址0x00 0x07+CRC_L+CRC_H
從機發送
ID+0x03+0x0E(0X07*2)+溫溼度…+CRC

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章