みなさん、お疲れ様です。私は根っからのアナログ回路畑出身の男です。通信って難しいですよね。パワエレ関係の人はアナログ回路畑の人が多いかもしれませんが、車に搭載されるパワエレユニットの場合、「あーせいこーせい」と指示はCAN通信で送信されます。
今日は「CAN通信ってなーに?はなほじー(@・u・@)」くらいの人に向けて「CAN通信」ってどういうもんなのか?ということについて書いてみようと思います。
以下の方が対象です。
開発でCAN通信に関わらないといけなくなったんだけど、通信のことはさっぱり
はじめてのCAN /CAN FD読んだけど理解できない俺って。。。(←筆者がこれでした。)
新人ですが、CAN通信って何ですか?
「実際に測定してみるのが早いよ」って言う人はいるかもしれないけど、「そもそも測定方法もわかんねぇよ!!」っていうのが初心者です。本記事はCAN通信さっぱりだった私が最初に躓いたところを記事にしてみました。
この記事を読んで準備体操をしてから、この↓のCAN童貞資料に目を通しましょう。
ちなみに筆者が書いたCAN関連記事は以下になります。気になったら読んで頂ければと思います。
ふわっとCANプロトコル(決まり事)を理解する
まずは例えばなしでふわっと理解しましょう。これからの例えはこの本↓の中で紹介されているものです。
CAN通信とは議長のいない全員が目隠しをしている会議みたいなもんだと思ってください。仕切りがいないので、みんな自由に発言が出来ます。でもみんなが好き放題喋っていたら会議の収拾がつきません。だからいくつか決まり事を作ります。
会議室=通信BUS、会議参加者=車載部品たち、発言権=部品ごとの優先順位、喋るときの決まり事=データフレーム構成、話すスピード=同期
平社員の田中君がいたとしたら
「はい!平社員の田中です。1分間喋ります。ごにょごにょごにょごにょ。聞こえましたか?終わります。」
というのが一つの通信のイメージです。
もし同時に話し始めたら、、、
はい!平社員の田中
あ、俺より役職が上の人が喋ってるから黙ろ。
はい!課長の佐藤です。
2分間喋ります。ごにょごにょごにょごにょ。。。
と役職(優先度)が低い方が喋るのをSTOPします。
CAN BUSで繋がった人たちは全員これをしているんですね。そんなイメージを持った上でCANのさわりを次に書いていきます。
実際のCANのあれこれ
それぞれの部品はどうつながってるの?
例え話に対してじゃあ、実際はどうなってんの?の話をしていこうと思います。
CAN通信はこのように↓一つの通信に対して複数部品がくっついています。
この繋がりが”会議”でMが”会議に参加する人たち”です。もうちょっと物理的に描くと↓こんな感じ。
ノードA,Bが参加者。CANバスが会議です。各参加者(部品たち)がCAN BUSに手を伸ばして繋がっている感じです。ここを通じて喋ったり、聞いたりします。
どうやって喋るの?
CAN通信の世界(っというか通信の世界)では0か1で喋ります。いわゆる2進数ですね。CAN通信では”0″をドミナント、”1″をレセシブと言います。
ふつーに0か1って言えよ。って思いますが、仕方がないです。しかも大体のCAN資料には当然のように”ドミナント”、”レセシブ”と言ってきます。覚えてないと「あれ?1だっけ0だっけ」と素人感が出てしまいます。腹立たしいです。しかも見て下さい↓。
電圧レベル的にはCAN_HとCAN_Lに電圧差がある方が”0″のドミナントなんですよ。んで、CAN_HとCAN_Lに電位差が無い方が”1″レセシブなんです。私の感覚的には逆なんだけどなぁ。。。
とにかく、ドミナントが”0″、レセシブが”1″です。もう覚えるしかねぇです。
そんで測定したり、仕様書とかには16進数で表示されることが多いです。(16進数って何?という方のために1例を出すと、2進数の”1111″は16進数のFです。まぁ調べたらすぐ出ます。関数電卓でも叩けば計算してくれます。)これもまぁ仕方がないですね。2進数と16進数だと計算しやすいからです。2進数はbin,16進数はhexと表記されていることが多々あります。「”bin”???なんのことや?」とならないようにガチ初心者は頭に入れときましょう。
あと、文字列のASCIIを数値に変換してやり取りとかしよるパターンもあるので、ASCIIの変換が必要な時があるよ。って頭の片隅に置いておいた方が良いです。(必要なときに調べりゃいいです。)
喋るときの決まりは?
前述の通り、喋るときは決まった型で喋ります。この型のことを「フレーム」と言います。何個かフレームがありますが、ここでは一番使うデータフレームの標準フォーマットを紹介します。
SOF:「はい!」
ID:「私は〇〇です!」
コントロールフィールド:「私はこのくらい話します。」
データフィールド:「ごにょごにょごにょごにょ」
ACK:「聞こえましたか?」
EOF:「終わります。」
ざっくり説明するとこんな感じで喋ります。ここでは超ざっくり説明しましたが、説明していないものについては、「はじめてのCAN/CAN FD」を読んで下さい(笑)
まとめ
本日はCAN通信の導入部分の解説をしてみました。
「目隠し会議をしていて、決まった内容をみんな喋ってるんだな。」っていうことをふわふわっと頭に入れてCAN童貞資料に目を通して頂ければ、少し理解の助けになるかなと思っています。
CANについて勉強していると段々疑問が出てくると思います。
・喋る内容(フォーマット)にはいくつか種類があるよ。
・どうやって喋るタイミングを合わせてるの?
・このフォーマットのこのビットの意味がわからん!
・エラーを数えるときの決まりごとは?
とか色々やってると疑問が出てくると思います。そのたびに調べて勉強していけば、いつの間にかCANそこそこマスターになっているはずです。たぶん。
以上です。最後までお読みいただきありがとうございました!!