ロケットの制御系の通信....
えー、CANなんて使ってるの?
CANて、スペックはいいことばっかりだけど、
実際に難しい環境で使うと、
全然ダメっていう印象なんだけど。
クロックの品質で謎のバスエラーなんて
割と定番だ。(スペックは守っていてもね!)
なんだよ、CAN BUSってエラーに
強いんじゃないのかよ!
と叫んだことは数知れず。
------
CANバスの通信エラー って、
組み込み系の、どうにもならないもの
(本質的に対策できないもの)
ランキングのかなり上位だと思っている。
(その次辺りにI2Cがくる)
いったん止まると、復旧のために
全ノードのリセットが必要だったり、
(動作状態で、原因が特定できない。
動き続けている!ノードが原因を
作っていたりする)
なんか止まったときは
近くにいる人(運転手とか)
に電源スイッチ、入れなおしてみて!
って頼めるくらいな
ところで使う印象。
絶対に止めたくない物には
使わない覚悟で臨んでるけど。
------
現実には使わざるを得ない状況
もあるので(確率的に)トラブルを
回避するために、
CAN BUSの規約にはない、
経験則からの、かなりきつい
設計ルールが有ったりする。
例えば、1:1しか使っちゃダメとか。
その結果、各ユニットが
ものすごい数のCANポート持って
個別のケーブルで繋がってたりする。
(これ通信にせず直接、信号
乗せた方が...?とか)
こんな(アホな)ものが設計
推奨されるくらいだから、
みんな苦労してるのは
間違いないんだけど。
確かに、机上でちょっと試す分には
無理させても動くように
見えたりするのが、またなんとも...
------
あとね、障碍時の原因特定が
すごく難しいのもCANの特長かな。
プロトコルの構造にも起因するから
根本的に回避できない。
誰かがヘマこくと、全然関係ない
ノードが突然落ちたりする。
現象から原因を特定するのは
ほぼ不可能。
------
でね....原因特定、対策できた、と思うでしょ...
実は、問題が他に行ってるだけでさ
(注目してないから別レイヤの問題に気づかない)
とかの怖い話ネタもいくつもあるしね。
”精度のいいオシレーター”も、
本当に使う環境で精度を保ってるか
ちゃんと試験した方がいいと思うよ。
発振器もすごく奥が深い。
まったく、CANなんてもんが無かったら、
もうちょっと仕事楽なんだけどなあ。
多分、ロケットも落ちなかったと
思うよ。(無責任な同情)
| 固定リンク | 0
« 自粛 | トップページ | STM32F4のDMA »
コメント
まさにCAN で1:5 とか1Mbps やろうと思っているんですが……。
相手方が持っているインターフェースがCAN, UART, EtherCAT で、できればデイジーチェーンで繋げたいなぁと。配線長は全て15cm 前後だから、なんとかなるかなと楽観視していました。
経験談、CAN は初めてです。
投稿: ぶらざー | 2020年4月24日 (金) 23時19分
規約を完全に守ってない、とか
本当はバスタイミング、バスの状態見てから調整すべきなのに、製品として変更できないとか、
やっちゃいけない組み方してあるとか、
電源落ちると、勝手にバスをショートさせるとか
勝手に自分だけエラーカウンタリセットしながら動いてるとか...
まあ、ありとあらゆる適当な実装を見ましたね。
相当高価な代物でも、です。
全部自分で組めるなら、それなりにいいんですが、出来合いのCAN I/Fは、CANを理解してないまま作られたようなのも結構います。
知らないならCAN使うなよ...と言いたい
個人的にはバスエラーで、バスが勝手に止まるのが(逆に)致命的な仕様だと思っています。
投稿: w谷 | 2020年4月25日 (土) 00時42分
”自由度が高い”のは設計時の話だけで、運用時に後付けでカジュアルにつけたり外したりすると、怪しい動きするのも定番
これが全然関係ないところでひっそり起きてたりするから、ものすごく迷惑...
ダメなものは、つけた瞬間全部落ちる、とかにしてくれたら分かりやすくて安心して使えるんだけど。
構成触るとどこに影響出てくるか、全然予測がつかないのは扱いにくいですね。
このあたりが1:1で使え、という処かなと。
(切り分けが可能になる)
Ethernetみたいな構造になってれば、物理的に1本の線に複数のネットワークが共存できるけど、CANはプロトコルの構造上、どうやっても無理ですね。
投稿: w谷 | 2020年4月25日 (土) 11時39分