シリアルポートの2つのピンから値を送信するには?

シリアルポートの2つのピンから値を送信するには?

Linuxシステムとマイクロコントローラ間の通信を試みています。

全二重RS485用のDB-9ピンを次のように設定しました。

DB-9 RS-485

Pin-7をPin-8に接続しました。

Pin-2をPin-3に接続しました。

#!/usr/bin/env bash
stty cs8 cstopb parenb -parodd < /dev/ttyO0 #I configure the Serial Port here
while :
do
        echo -ne '\x00\x05\x00\x00\xFF\x00\x8D\xEB'>/dev/ttyO0
        usleep 10000
done

sttyコマンドを使用してシリアルポートを設定できます。

愚かな質問かもしれませんが、シリアルポートが両方のソケット(RS-485の場合はAとB)で同じ値を出力したいと思います。

私のマイクロコントローラはこの信号をModbus-RTU信号として認識しないので、これが欲しいです。

ただし、ピンをクロス接続すると、マイクロコントローラはこれを信号と見なしますが、正しい信号ではないため、これを受け入れません。

別のModbusマスターを使用してマイクロコントローラを接続し、ロジックアナライザの出力は次のとおりです。

他のデバイスへのロジックアナライザ出力

しかし、私のLinuxシステムが接続されている場合、出力信号は次のようになります。

Linuxシステムロジックアナライザ出力

両端から同じ信号を出力するには?

編集:下図のようにピンを接続しました。

つながる

その後、マイクロコントローラに接続します。

ベストアンサー1

以下のように全二重RS485用のDB-9ピンを設定しました。

差動信号を使用してRS485として動作するハードウェアもありますか、それとも通常のシリアルポートはありますか?汎用シリアルポートハードウェアはRS485信号を生成せず、ロジックアナライザの出力は通常シリアルポートと非常に似ているためです。

したがって、RS485ハードウェアを購入するか、RS232-RS485コンバータを購入する必要があります。おそらく自分で作ることもできます。電子スタックの交換に関する質問です。

おすすめ記事