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…