sudohayato
2017年9月29日 16時36分
お世話になっております。須藤と申します。
Armadillo-x1 製品マニュアルによると、RS485アドオンモジュールの最大データ転送レートは「4Mbps」と記載されております。
Armadillo-x1にRS485アドオンモジュールを搭載した状態で4Mbpsでデータが取得できることは保証されておりますでしょうか?
最大データ転送レートでデータが取得可能な条件などはありますでしょうか?
#RS485アドオンモジュールは4Mbpsに対応できるが、Armadillo(linux)が対応できないということはありますでしょうか?
以下の環境にて通信を行っておりますが、4Mbpsでの通信でデータをロストしているような現象が発生しており、原因箇所を追及しております。
【構成】
X1 ------------------ 端末
・半2重 4Mbps
・SW1 (1:ON 2:ON 3:OFF 4:ON) ※4をOFFにしても変わらず
【通信データ】
・周期:2ms
・Tx:26byte
・Rx:52byte
【x1から見た通信シーケンス】
|<------------ 2ms ------------------->|
|<--- 225μs --->|
+-----*-----------^----------------------+----*
+:トリガ
*:Tx
^:Rx
・2ms周期のトリガにて、即時Tx(26byte)
・Tx後、read待ちとなり、対向装置よりRx(52byte)
【現象】
オシロで確認したところ、以下のように見えています。
1) write()をコールしているが、回線でオシロの回線上に波形が見えないことがある。
2) read()前に52byteのselect(timeout=1ms)してみると、タイムアウトになることがある。
その際、オシロ上では回線上に波形が見えている。
以上、よろしくお願いいたします。
コメント
sudohayato
安藤様
ご返信ありがとうございます。
> はい。ハードウェアはもちろん、Linuxカーネルで4Mbpsでの送受信に対応しています。
メーカー保証されているとのことで了解いたしました。
ちなみにですが、対応とはどのような環境でしょうか?
弊社の動作環境と大きく異なっておりますでしょうか?
> 信号が衝突しているような波形に見えませんか?
selectタイムアウトした直前の受信データの波形を確認しましたが、Writeデータと衝突しているようには見えませんでした。
波形からは、
・Writeしたが回線上に出ていっていない
・回線上データあるが、select()から復帰していない
ように見えます。
write処理では、imx-uartドライバまではコールしていると思います。
ドライバ以降で廃棄されるなど可能性はありますでしょうか?
また、廃棄統計などのカウンタはありますでしょうか?
以上、宜しくお願いいたします。
> 安藤です。
>
> >Armadillo-x1 製品マニュアルによると、RS485アドオンモジュールの最大データ転送レートは「4Mbps」と記載されております。
> >Armadillo-x1にRS485アドオンモジュールを搭載した状態で4Mbpsでデータが取得できることは保証されておりますでしょうか?
>
> はい。ハードウェアはもちろん、Linuxカーネルで4Mbpsでの送受信に対応しています。
>
> 半二重で接続しているとのことですが、データ送信のタイミングで信号が対向機器と衝突すると、
> そのような挙動になる可能性があります。
> LinuxカーネルはリアルタイムOSではないため、タイミングがシビアな場合、信号が衝突してしまうかもしれません。
>
> Armadillo-X1が信号線のドライブに失敗したタイミングの波形を確認していただけますか?
> 信号が衝突しているような波形に見えませんか?
sudohayato
安藤様
波形データを添付いたしますので、ご確認いただければと思います。
以上、宜しくお願いいたします。
ファイル | ファイルの説明 |
---|---|
波形Data.png |
at_takumi.ando
2017年9月29日 17時29分
安藤です。
>Armadillo-x1 製品マニュアルによると、RS485アドオンモジュールの最大データ転送レートは「4Mbps」と記載されております。
>Armadillo-x1にRS485アドオンモジュールを搭載した状態で4Mbpsでデータが取得できることは保証されておりますでしょうか?
はい。ハードウェアはもちろん、Linuxカーネルで4Mbpsでの送受信に対応しています。
半二重で接続しているとのことですが、データ送信のタイミングで信号が対向機器と衝突すると、
そのような挙動になる可能性があります。
LinuxカーネルはリアルタイムOSではないため、タイミングがシビアな場合、信号が衝突してしまうかもしれません。
Armadillo-X1が信号線のドライブに失敗したタイミングの波形を確認していただけますか?
信号が衝突しているような波形に見えませんか?