0
我正嘗試通過Modbus RTU在Matlab和Watlow F4溫度控制器之間建立通信。Matlab串行通過Modbus RTU與Watlow F4通信
我的代碼看起來像這樣至今:
obj = serial('COM4');
fopen(obj);
set(obj, 'BaudRate', 9600);
set(obj, 'Terminator', 'CR');
set(obj, 'Timeout', 100);
set(obj, 'InputBufferSize', 3000);
現在我想讀寄存器100控制器的地址爲1
fwrite(obj, [1 3 00 100 0 1 197 213]);
fread(obj, 7);
但隨後出現以下錯誤:
Warning: Unsuccessful read: The specified amount of
data was not returned within the Timeout period.
您是否有任何人有過此溝通的經驗?你有什麼想法解決這個問題嗎? 不幸的是,瓦特隆支持無法幫助我與通信...
謝謝!
您的Modbus請求不正確。從站ID後面的字節應包含請求的寄存器數量和CRC。建立自己的Modbus請求和響應的好的起點在這裏:[SimplyModbus](http://www.simplymodbus.ca/FC03.htm)。 在Mathworks文件交換中也有幾個例子:[FEX Modbus Search](http://www.mathworks.com/matlabcentral/fileexchange/?utf8=%E2%9C%93&term=Modbus) –
感謝你的迴應!你確定嗎? 在我的情況: 1 - 從地址 3 - 用於讀取 00 100 = 00 64進制功能代碼3 - 寄存器100,第一個寄存器的數據地址 0 1 - 讀寄存器數 197 213 = C5 D5 hex - CRC 因此,由於您首次鏈接到Simply Modbus,這應該是正確的順序? –