[Arduino] Modbus RTU via RS485(MAX485 IC)

工作需要用Modbus RTU去跟機器通訊

卡關幾天後終於成功了...

不懂Modbus的可以參考這裡http://www.xuan.idv.tw/wordpress/?p=1705



基本上就是一台Master 跟很多台Slave

Master下指令給Slave

我的情況就是下指令給ID 1號,讀取 0x0000 暫存器位置開始,跟往後 4 個位置的值...







首先Pin的線路圖可以參考下方圖





Arduino Modbus RTU 的Library 我是用https://github.com/4-20ma/ModbusMaster


Arduino Code:https://github.com/openopen114/Arduino_Modbus_viaRS485/tree/master/ArduinoCode/ModbusMaster_viaRS485


windows上Modbus Slave 模擬器:http://www.plcsimulator.org/documentation/overview





基本上只要RS485送出去的訊號是正確的,com port  baud rate有設定好,就沒太大問題


要看RS485送出去的訊號可以用CoolTerm 看(支援 HEX)

不會用可以參考http://openopenblog.blogspot.tw/2016/09/arduino-rs485-serial-port-connect-via.html


......


Arduino 上有很多Modbus RTU的庫,但可能我太魯了不會用,用CoolTerm看到送出來的訊號都是錯的......






3 則留言:

Unknown 提到...

請問modbus slave模擬送出的資料格式是?

openopen 提到...

你是問slave回應嗎??
可以參考這篇http://www.xuan.idv.tw/wordpress/?p=1705
裡面有slave回應的部分

Aries Tsai 提到...

這幾天也用到的這篇文章所提及的所有設備與概念但我遇到問題無法writeSingleRegister到我的控制器當中,請問樓主有試過Write嗎?

張貼留言

蔡松霖
Related Posts with Thumbnails