【パワーメーター2019】Xbee高速通信データ欠落対策<HardwareFlow制御追加>

●ここ3カ月の経緯
パワーメーター2019テーマでは、ここ3年適当に開発してきたパワーメーターの実験評価精度と信頼性を高めることを留意してここ3カ月進めてきております。SeatTubeのひずみ波形とクランクのトルク波形との相関性を精度と信頼性を管理した状態で、比較して、SeatTube型パワーメーターの客観的評価を決定するのが、9月末までの目標です。
●クランクのXbeeからの通信データの異常
現象1:クランク角度をIMUで重力加速度から計算しているのですが、左右で位相がずれてしまう現象がある
現象2:クランクデータにタイムスタンプをつけてXbeeで送信しているのですが、タイムスタンプの時刻データの周期がばらついて、累積して位相ずれが大きくなる現象

●長時間測定で発見した現象
電池寿命を測定するため7時間連続で、CPU基板からXbeeでタイムスタンプとデータ連番を送信してTeraTermで受信ログする実験をしました。

①電池寿命試験のデータ
7時間持ったデータの周期とデータ欠落のグラフ
※4msecで7時間ログするとデータ行が630万行にもなってしまって、個々のデータを見てられないので、
1秒毎に間引いて、グラフにしました。4msecで割り込み送信しているPgmから、周期ばらつきとデータ欠落数をプロットしたものです

結果1:が、周期は時間とともに階段状に遅くなっていく傾向があります。
結果2:データ欠落数も累積して12000秒経過で10万個にも達していてとても、10万データ/630万データ=1.6%欠落がある点で
数%の精度を判断する積分処理の精度にも悪影響があります。

②マイコンのDC3.3V供給

結果3:安定した電源から供給すると欠落データ数が12000秒後でも3万個程度で電池駆動の場合より30%に激減した。
結果4:周期の遅延傾向は同じく発生している。



③Xbee通信をやめてUSBシリアルで測定

結果5:データの欠落はゼロでした。
結果6:周期の遅延傾向は、上記2条件とも同じ傾向

●周期の遅延の解析
1秒毎のデータで、生の4msecのプロットではないので、生データを見てみると、4msec周期と5msec周期が混在していてデータ時間経過とともに5msec周期が増えてきて全体として遅延していくことが判りました。
結果7:USBシリアルでは、遅延は1500秒以降は累積してないので、一定値で落ち着いている。
=>周期の遅延は、Xbeeの送信とは別にCPUの割り込み精度の可能性もあるため別途解析する

●Xbeeで115200bps通信データは信頼できるのか?
検索すると ねむいさんのブログ記事がありました。

http://nemuisan.blog.bai.ne.jp/?eid=160036
なんと、Xbeeでは115200bpsでは欠落が多くて使えないからフロー制御が必要だと書いてありました。
  フロー制御無しで使えるのは19200bpsまでが確実だそうです。

●HardwareFlow制御を試してみた
作業1:Xbeeの設定をXCTUでFLOW制御有に設定

作業2:  XbeeのCTSをマイコンのRTS、XbeeのRTSをマイコンのCTSに接続

作業3:マイコン側プログラムにFLOW制御文をいれる
pc.set_flow_control(Serial :: RTSCTS,PA_12,PA_11);//rts、cts

●最悪条件でどうなるか電池駆動Xbee送信で1時間だけ測定してみました。
結果8:データ欠落数は、フロー制御無しでは、12000秒間で10万個だったのが、フロー制御有では、4000秒間で9千個まで減ったので比例していると考えると1/3程度に減って、マイコンDC電源並みにデータ欠落が激減しましたが、USBシリアルのようにゼロにはなりませんでした。HardwareFlow1制御しても絶対的な対策にならないことが判りました。

●以後
電源のバラツキとフロー制御で高速データ通信の精度と信頼性を確保しようとしてますが、未だ不足があることが判りました。
Xbee
無線通信で115200bps高速転送する場合のデータ欠落は必然的に発生するという認識を得ました。
①アナログ無線の感覚で、アンテナと距離位置関係などを気にして、通信の信頼性を設計していかないとこれ以上は無理かと思いました。

 

 

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です