Armadilloフォーラム

Armadillo-IoT G3LのCON4によるRS-485通信の設定について

timaizumi

2021年4月20日 9時17分

●機種:Armadillo-IoT G3L
●OS:Linux version 4.9.133-at15 (atmark@atde7) (gcc version 6.3.0 20170516 (Debian 6.3.0-18) )

●やりたい事:CON4を使ったRS-485でmodbus通信で温湿度センサの値を取得しようとしております。
●以下の手順にて実施しましたが、Armadillo-IoT G3L のCON4を使ったRS-485通信がでいませんので、何か設定に不足がございましたらご教示下さい。

●参考:貴社、「Armadillo-640:USB-RS485変換を使って温湿度のデータを取得してみた」のブログ記事を参考に行っております。
センサーはブログと同じものを使用。
RS-485は+(A)同士、-(B)同士をで配線し問題無し。
https://armadillo.atmark-techno.com/blog/10900/8398

●以下手順

まず初めに、Armadillo-IoT G3Lを使用して、
①USB-RS485変換器を使い、サンプルのプログラムで通信できる事を確認しました。
ModbusSerialClient(baudrate=9600, port="/dev/ttyUSB0", method="rtu")は変更なし。
→通信できました。(RS-485の終端抵抗は無し)


②RS-485のポートへセンサーを接続
メンテナンスモードに入り、以下設定
=>setenv optargs imx.rs485_uart2=0x03,0,0
=>saveenv
=>boot

Pythonコードを以下の様に変更。
ModbusSerialClient(baudrate=9600,stopbits=1, port="/dev/ttymxc1", method="rtu")
→通信できませんでした。

念のために、以下も試しましたが、pythonで通信速度を設定しているため、プログラム動作時に上書きされると思うので、影響は無いと思います。
stty -F /dev/ttymxc1 9600
再度Pythonコード実行
→通信できませんでした。

終端抵抗は120Ωが無いため、100Ωで代用。
→通信できませんでした。


③念のために、データ長、パリティ、ストップビットを設定
ModbusSerialClient(baudrate=9600,stopbits=1,bytesize=8,parity='N', port="/dev/ttymxc1", method="rtu")
※pymodbusでは8n1がデフォルト設定なのですが、明示的に設定してみました。
→②と同じく、通信できませんでした。

念のために、以下も試しましたが、pythonで通信速度を設定しているため、プログラム動作時に上書きされると思うので、影響は無いと思います。
stty -F /dev/ttymxc1 9600
再度Pythonコード実行
→通信できませんでした。

終端抵抗は120Ωが無いため、100Ωで代用。
→通信できませんでした。

コメント

at_syunya.ohshio

2021年4月20日 14時24分

大塩です。

> ●機種:Armadillo-IoT G3L
> ●OS:Linux version 4.9.133-at15 (atmark@atde7) (gcc version 6.3.0 20170516 (Debian 6.3.0-18) )

カーネルバージョン at15 をご利用とのことですが、このバージョンにはUART通信に関する不具合が存在するため、可能であれば最新バージョンである at19 にアップデートし、ご確認いただけますでしょうか。

詳細は以下製品アップデートページをご確認ください。
https://armadillo.atmark-techno.com/news/20201019/software-update-aiotg…