2

Windows マシン (Windows 10) から Modbus RTU 半二重 RS-485 接続を介してカスタム ボードと通信しようとしています。私は python MinimalModbus API を使用しており、すべての依存ライブラリがインストールされています。また、適切な RS-422/485 アダプターも持っています。ボーレート、COM ポート、スレーブ アドレス、パリティ ビットがすべて正しいことはわかっています。また、コードが O スコープ トレースからビットストリームを出力していることもわかっています。なんらかの理由で、ボードはまったく応答しません。どんな助けでも大歓迎です。

import minimalmodbus
import serial 

#minimalmodbus.CLOSE_PORT_AFTER_EACH_CALL = True 
minimalmodbus.PARITY = serial.PARITY_EVEN
#minimalmodbus.handle_local_echo=True
minimalmodbus.BAUDRATE = 57600
minimalmodbus.TIMEOUT = .01
instrument = minimalmodbus.Instrument('COM4',0)
instrument.debug = True
print(instrument.read_register(11,1))

MinimalModbus debug mode. Writing to instrument (expecting 7 bytes back): '\x00\x03\x00\x0b\x00\x01ô\x19' (00 03 00 0B 00 01 F4 19)
MinimalModbus debug mode. No sleep required before write. Time since previous read: 1478637162864.7 ms, minimum silent period: 0.67 ms.
MinimalModbus debug mode. Response from instrument: '' () (0 bytes), roundtrip time: 10.9 ms. Timeout setting: 10.0 ms.

Traceback (most recent call last):
  File "RS485.py", line 11, in <module>
    print(instrument.read_register(11,1))
  File "C:\Users\mtangy\AppData\Local\Programs\Python\Python35-32\lib\site-packages\minimalmodbus.py", line 258, in read_register
    return self._genericCommand(functioncode, registeraddress, numberOfDecimals=numberOfDecimals, signed=signed)
  File "C:\Users\mtangy\AppData\Local\Programs\Python\Python35-32\lib\site-packages\minimalmodbus.py", line 697, in _genericCommand
    payloadFromSlave = self._performCommand(functioncode, payloadToSlave)
  File "C:\Users\mtangy\AppData\Local\Programs\Python\Python35-32\lib\site-packages\minimalmodbus.py", line 795, in _performCommand
    response = self._communicate(request, number_of_bytes_to_read)
  File "C:\Users\mtangy\AppData\Local\Programs\Python\Python35-32\lib\site-packages\minimalmodbus.py", line 930, in _communicate
    raise IOError('No communication with the instrument (no answer)')
OSError: No communication with the instrument (no answer)
4

2 に答える 2

0

問題は次の行にあります。

instrument = minimalmodbus.Instrument('COM4',0)

minimalmodbusmodbus id が 0 の機器に到達するように指示しています。これは無効な ID です。

機器の設定を確認し、コード内の ID を修正してください。

于 2017-01-01T18:50:22.893 に答える