Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

B3Mのパラメータ書き込み機能について #3

Open
hiroki-0001 opened this issue May 4, 2022 · 6 comments
Open

B3Mのパラメータ書き込み機能について #3

hiroki-0001 opened this issue May 4, 2022 · 6 comments

Comments

@hiroki-0001
Copy link

baudrateを3000000に設定した状態で『Set Parameter』を使用してパラメータを設定すると、Gain Presetごとのゲインの値が正常に書き込まれていないことが判明しました。他のパラメータに関しては正常に書き込まれていました

@yasuohayashibara
Copy link
Contributor

報告ありがとう.
特に3Mbpsに上げる必要がなければ従来どおり1Mbpsにしたほうが良いと思います.

ソフトウェアマニュアル P.17

通信速度2Mbps以上で通信を行った時、通信エラーになる場合があります。その場合、ストップビットを2にすることで改善されることがあります。

https://kondo-robot.com/w/wp-content/uploads/B3M_SoftwareManual1.2.0.3.pdf

ちなみに,ゲインはulong(4バイト)なので,他と比べてエラーが発生しやすいかもしれません.
(ソフトウェアマニュアル P.58)

@hiroki-0001
Copy link
Author

新機体であるSUSTAINAではRS485変換基盤のICの変更したため、B3MのBaurateが1000000 → 3000000に変更しているため、パラメータの書き込みのしやすくするためにはこの問題は解決したほうがよいと考え報告しました。
ストップビットを変更することでこの通信のエラー解決できそうであれば、解決したほうがよいと個人的には考えていますがどうでしょうか?

@hiroki-0001
Copy link
Author

hiroki-0001 commented May 5, 2022

B3Mのbautrateを上げることで今まで通信速度の遅さによる問題で取得できずにいた電流値やエラーログ、B3Mの温度等が取得できるようになるため、制御班の意向としてもBautrateは上げたいと考えています。

@yasuohayashibara
Copy link
Contributor

3Mbpsでも良いとは思いますが,以下念のためお伝えします.

1)従来の通信回路でもおそらく3Mbpsで通信できます.(少なくともKondoの変換器では通信できます)
  3Mbpsを選択していないのは,昔エラーレートを調べて,1Mbpsではエラーが発生しにくいと判断して選んだと記憶しています.
  (中島君が調査したドキュメントをどこかで見たような気がしますが見つかりませんでした.)

2)1Mbpsと3Mbpsでそれほど通信できるデータ量は変化しません.
  B3Mは送受信に際して200usのガードタイムが必要になりますので,どちらかというとそちらの影響が大きいので連続したデータを受信しない限りはそれほど影響しないと思います.
  また,制御周期を変えるのであれば別ですが,制御周期が10msごとだとすると1Mbpsでも十分だと思います.

  サーボパラメータ領域の全てのデータ(45バイト分)を送受信するために必要な時間を計算してみました.
  
  送信(7バイトのコマンド)に要する時間
  1Mbps 200us(ガードタイム)+70us(7バイト分の送信時間,スタートビットとストップビットを含む)
  3Mbps 200us(ガードタイム)+23.3us(7バイト分の送信時間,スタートビットとストップビットを含む)

  受信(45バイトのデータ,サーボパラメータ領域全て)に要する時間
  1Mbps 200us(ガードタイム)+500us(45バイト分のデータの送信時間,スタートビットとストップビットを含む)
  3Mbps 200us(ガードタイム)+166.6us(45バイト分のデータの送信時間,スタートビットとストップビットを含む)
  
  送受信に要する時間
  1Mbps 970us (200us+70us+200us+500us)
  3Mbps 590us (200us+23.3us+200us+166.6us)
  
  結果的に10msで制御する場合は,1Mbpsでも10台分のデータを取得できます.
  角度制御のコマンドを送ることを考慮に入れていませんがこれに比べると微々たるものになります.

  あと,これらのパラメータをリアルタイムで得るためには1ms周期程度でデータの送受信を行うプログラムが必要で,リアルタイムOSではないLinuxでこれを行うのはわりと大変かもしれません.

@MasatoKubotera
Copy link
Member

1)従来の通信回路でもおそらく3Mbpsで通信できます.(少なくともKondoの変換器では通信できます)   3Mbpsを選択していないのは,昔エラーレートを調べて,1Mbpsではエラーが発生しにくいと判断して選んだと記憶しています.   (中島君が調査したドキュメントをどこかで見たような気がしますが見つかりませんでした.)

KONDO純正の変換器:RS485USB/シリアル変換アダプターに実装されているチップ,B3M事態に搭載されているのはADM3078Eであり,Baudrate3,000,000[bps]に対応していますが,これが機体に搭載されていたのは2021年の4月頃の163機,165機の数機体に限ります.

それ以外の機体は以前からLT1480が搭載されていてこちらは2,500,000[bps]までしか対応していません.このチップでBaudrate3,000,000[bps]で通信することも推奨されていませんが,一応実機でエラーが出ることがあるようですが,通信はできるようです.
もしかしたら,このチップのBaudrate上限値を知らずに「エラーレート」が高いと判断している可能性もあります.

@yasuohayashibara
Copy link
Contributor

こちら回答が遅くなり申し訳ありません.
経緯としてはデフォルトの1.5Mbpsで通信エラーが出たので,1.0Mbpsに下げたという流れだったと思います.
3.0Mbpsに関してはあまり検証していないと思います.
(この件はあまり関わっていなかったので詳細は分かりませんが)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants