之前貼出了代碼,但是本地源碼已經找不到了;本篇補充了一些使用說明
一、參考代碼
1.不方便下載的同學可以參考貼出來的源代碼鏈接:RS485
2.工程鏈接:RS485
二、基本知識
1.RS485通信講解:
RS485數據基本格式如下,開發代碼時,根據不同廠家產品說明發送指令,並解析返回數據就可以得到對應含義的值
1.1:讀50001、50002兩個寄存器,假設從機地址爲1
上位機(主機)發送下行報文:01 03 00 05 00 02 D4 0A
從機地址 | 功能碼 | 寄存器起始地址 | 讀取寄存器個數 | CRC校驗 |
---|---|---|---|---|
01 | 03 | 00 05 | 00 02 | D4 0A |
下位機(從機)返回上行報文:01 03 04 00 00 00 00 FA 33
從機地址 | 功能碼 | 返回字節個數 | 寄存器30001數據 | 寄存器30002數據 | CRC校驗 |
---|---|---|---|---|---|
01 | 03 | 00 04 | 00 00 | 00 00 | FA 33 |
1.2:向50001寄存器中寫入0x36,0x24,假設從機地址爲1
上位機(主機)發送下行報文:01 06 00 05 00 01 36 24 6D BC
從機地址 | 功能碼 | 寄存器起始地址 | 讀取寄存器個數 | 要寫入的數據 | CRC校驗 |
---|---|---|---|---|---|
01 | 06 | 00 05 | 00 01 | 36 24 | 6D BC |
下位機(從機)上行報文:01 06 00 04 00 01 12 34 4a b0
從機地址 | 功能碼 | 寄存器起始地址 | 讀取寄存器個數 | 要寫入的數據 | CRC校驗 |
---|---|---|---|---|---|
01 | 06 | 00 05 | 00 01 | 36 24 | 6D BC |
三、使用
1.RS232:與野火的串口調試工具測試普通串口通信
2.代碼只實現了字符串作爲發送數據的格式(如果需要支持十六進制格式請自行調整);這裏僅用代碼調試,接收區展示了接受到的十六進制字符串格式數據
檢驗方法採用CRC-16/MODBUS方式,這裏提供一個在線校驗工具地址:CRC校驗