最近的項目中使用到了歐姆龍的溫控器,里面有很多的通信方式,我們使用的常見的modbus——RTU方式,其他方式我們不使用,其中通信手冊上面有很多通信的實例,歐姆龍modbus還區分4字節模式和2字節模式,我們選擇2字節,加快通信效率,而且2字節和4字節的模式的地址還不一樣,但是實現的功能是一樣的,比如開啟,關閉等操作。
下面使用modbus poll 和slave工具模擬modbus的通信協議3,設置的方式可以參考之前的文章,這里不再詳細說明,都是差不多的,觸類旁通。
運行后,可以看到一下的信息,我截取如下:
Tx:008,Rx:009可以忽略,只是軟件的時間標志。
Tx:008-01(從機地址) 03(功能碼) 00(寄存器地址高位) 00(寄存器地址高位) 00(寄存器數量高位) 01(寄存器數量高位) 84(CRC低) 0A(CRC高)
Rx:009-01(從機地址) 03(功能碼) 02(字節數) 00(數據 1 高位) 04(數據 1 低位) B9(CRC低) 87(CRC低).
然后對比歐姆龍的實例:
響應:
通信實例,我這里采用的是2字節的模式。
調試筆記:
modbus我們使用的rs485總線,我按平常的方法去調試,A-A ,A-B,結果歐姆龍上面的A、B是相反的,A-B ,B-A才行,說明,標簽也有不統一的時候,需要多嘗試。
因此有時候調試的時候需要多長點心,自己單片機的代碼不着急寫,可以使用電腦的串口助手來先調試,查看通信指令,熟悉通信設備,之后在來寫單片機的代碼。