2016-11-08 8 views
1

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

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) 
+0

ボードが応答せず、あなたのコードがデータを送信するため、あなたはPCではなくターゲットデバイスをデバッグすることをお勧めします。 – Olaf

+0

私は現在oスコープのビットストリームをチェックしています。私はターゲットデバイスが各PDUの追加の停止開始とパリティビットを必要としていることを知っていますが、ビットストリームがどのように見えるかを正確に把握することができません。コンバータのレイテンシがボーレートを変える可能性はありますか? – CompMan

+0

すべてのmodbusデバイスがこれらの正確な追加ビットを期待しているかどうか知っていますか?またはこのボードに固有のものですか?また、デバッグターゲットデバイスとは、ソフトウェアを意味しますか?私はそれと通信しようとしているので、GDBを使ってファームウェアを踏みにじるのが好きですか? – CompMan

答えて

0

問題ラインである:あなたがゼロに等しい器具有するMODBUS IDに到達するminimalmodbusに指示さ

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

。これは無効なIDです。

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

0

instrument = minimalmodbus.Instrument('COM4',1)でスレーブIDを設定してください.1はカスタム計測器のスレーブIDです。

そして1が1000ミリ秒に等しいこのライン

minimalmodbus.TIMEOUT = 1でタイムアウトパラメータを増やしてみてください。

関連する問題