CAN信号をオシロで見る・判っちゃいない方
ちょっと以前(半年ほど前)だが、私より年上の元車両メーカーサービス部所属だった方と話す機会があり、今後ますます増加するCANデバイスとかセキュリティのことを語り合った時に感じたことから記してみる。
話しの核心は、CAN信号の確認にオシロを使いたいということを言い出され、私としては「そんなのほとんど意味がない」と全否定したいところだったが、相手の対面も考えてやんわりと「CAN信号はデジタルパルス信号なので、デコードできる計測器(デコーダー)がないと意味ないですよ」と述べたのだった。
つまり、デジタル信号とアナログ信号のやりとりの概念が、頭では判っている様でいて、実のところまるで判っちゃいないことを云いたいのだ。つまり、デジタルとは1と0(あるなしとか)2値の信号のやりとりで、アナログとは信号が変化するもの程度は理解しているのだろう。
しかし、デジタル信号で情報のやりとりするには、モールス信号と想像してもらえば判り易いと思うが、1、0の2値で通信するのはその通りだ。ただし、送信側ではの指示値なりをあるビット数のまとまりをもって文字列を符号化(エンコード)しつつ行っている。そして、受信側では、信号のまとまりであるエンコード信号を復号化(デコード)して通信をしているのだが、このことがよく判っていない様だ。
CAN信号をオシロで見ることは、信号にノイズが乗っていないかという面で点検する意味はあるのだが、信号そのものを見ても、パルス信号で電位差が幾らかとか、パルス幅とか一定時間のパルス数から周波数が判る程度だろう。つまり、信号のまとまりをもって、デコードできない限り、オシロの波形で、ここはデータとして何が意味されているか判らないということだ。まあ、モールス信号でも、よほど訓練された者でないと、ツートン信号を見て、もしく聞いても、直ちに頭の中でデコードして、手で筆記できる方は一般人には稀だろう。ちなみに、モールス信号を実際にエンコードもしくはデコードを体験するには、以下のサイトが参考になる。
何でもモールス信号変換
https://morse.ariafloat.com/
さて、実際のCAN信号の内部を説明したのが添付図だ。CANの場合はHiとLoの2(ペア)線で作動電圧パルスとして信号を伝えているが、PCとかスマホの有線NetにしてもWifi無線Net ても二値のパルスの信号が時系列に連続した信号で、あるまとまりをもってフレームという概念で仕切られている。
このフレームだが、映画とか動画で、1コマ毎の画像をそう呼ぶが、Net通信の場合は、フレーム開始からフレーム終了のそれぞれ信号間で区分される。送受データが、1フレームに入り切らない場合は、データを逐次分割して、小分けにして送受されるのだが、このことからパケットとも呼ばれる様だ。
なお、ネットワーク内においては、送受データが必ずしもフレーム順で連続しない。これは、ネットワーク内には、送受者だけ存在するものでなく、インターネットでは不特定多数が送受しているからだ。単独のクルマ内でもネットワークには様々の接続機器(大きさ能力に関わらずNet情報を送受できるコンピュータでノードとも云う)があり、信号送受しているので、送受フレームが連続する保証はない。また、フレーム連続送受を許すと、大きなデータを送受している間、その他の機器でデータ送受ができなくなってしまう。
CANのフレーム内には送受データの中核となるデータ領域の他に、アービトレーション(調停の意)とかコントロール、そしてCRC、エンドフレームなどの信号がある。この中で、アービトレーレションとコントロールは、フレーム先頭だとか、そもそも同時に複数以上の送信が衝突した場合に、再送信をする仕組みだが、この際の優先順位を決めたり、相手先のアドレスを明示している様だ。
CRCというのは、送受フレーム内信号列の誤りを検出する仕組みで、こういう仕掛けは、多くの記録メディア(HDD,DVDなど)の記録にも使用されている。エンドフレームはフレーム終了を示す約束信号だ。
具体例でCAN信号を見つつ説明したいが、下図のCANバス信号例からすると、信号の1、0はあるまとまりをもって意味をなす。つまり、大きく見るとフレームという大枠があり、この中をアービトレーション(調停)、コントロール(制御)、データ(送受データの核心)、CRC(データ整合性チェック)、フレームエンド信号という区分となる。
なお、CANは2.0Aから2.0Bへバージョンアップされて高速化されているが、高速化なされているのはデータ領域の周波数のみ上げて対応してる様だ。と云うのは、すべてを高速化すると、接続機器などに新旧があると互換性を失ってしまうことを避けるためという。
ちょっと以前(半年ほど前)だが、私より年上の元車両メーカーサービス部所属だった方と話す機会があり、今後ますます増加するCANデバイスとかセキュリティのことを語り合った時に感じたことから記してみる。
話しの核心は、CAN信号の確認にオシロを使いたいということを言い出され、私としては「そんなのほとんど意味がない」と全否定したいところだったが、相手の対面も考えてやんわりと「CAN信号はデジタルパルス信号なので、デコードできる計測器(デコーダー)がないと意味ないですよ」と述べたのだった。
つまり、デジタル信号とアナログ信号のやりとりの概念が、頭では判っている様でいて、実のところまるで判っちゃいないことを云いたいのだ。つまり、デジタルとは1と0(あるなしとか)2値の信号のやりとりで、アナログとは信号が変化するもの程度は理解しているのだろう。
しかし、デジタル信号で情報のやりとりするには、モールス信号と想像してもらえば判り易いと思うが、1、0の2値で通信するのはその通りだ。ただし、送信側ではの指示値なりをあるビット数のまとまりをもって文字列を符号化(エンコード)しつつ行っている。そして、受信側では、信号のまとまりであるエンコード信号を復号化(デコード)して通信をしているのだが、このことがよく判っていない様だ。
CAN信号をオシロで見ることは、信号にノイズが乗っていないかという面で点検する意味はあるのだが、信号そのものを見ても、パルス信号で電位差が幾らかとか、パルス幅とか一定時間のパルス数から周波数が判る程度だろう。つまり、信号のまとまりをもって、デコードできない限り、オシロの波形で、ここはデータとして何が意味されているか判らないということだ。まあ、モールス信号でも、よほど訓練された者でないと、ツートン信号を見て、もしく聞いても、直ちに頭の中でデコードして、手で筆記できる方は一般人には稀だろう。ちなみに、モールス信号を実際にエンコードもしくはデコードを体験するには、以下のサイトが参考になる。
何でもモールス信号変換
https://morse.ariafloat.com/
さて、実際のCAN信号の内部を説明したのが添付図だ。CANの場合はHiとLoの2(ペア)線で作動電圧パルスとして信号を伝えているが、PCとかスマホの有線NetにしてもWifi無線Net ても二値のパルスの信号が時系列に連続した信号で、あるまとまりをもってフレームという概念で仕切られている。
このフレームだが、映画とか動画で、1コマ毎の画像をそう呼ぶが、Net通信の場合は、フレーム開始からフレーム終了のそれぞれ信号間で区分される。送受データが、1フレームに入り切らない場合は、データを逐次分割して、小分けにして送受されるのだが、このことからパケットとも呼ばれる様だ。
なお、ネットワーク内においては、送受データが必ずしもフレーム順で連続しない。これは、ネットワーク内には、送受者だけ存在するものでなく、インターネットでは不特定多数が送受しているからだ。単独のクルマ内でもネットワークには様々の接続機器(大きさ能力に関わらずNet情報を送受できるコンピュータでノードとも云う)があり、信号送受しているので、送受フレームが連続する保証はない。また、フレーム連続送受を許すと、大きなデータを送受している間、その他の機器でデータ送受ができなくなってしまう。
CANのフレーム内には送受データの中核となるデータ領域の他に、アービトレーション(調停の意)とかコントロール、そしてCRC、エンドフレームなどの信号がある。この中で、アービトレーレションとコントロールは、フレーム先頭だとか、そもそも同時に複数以上の送信が衝突した場合に、再送信をする仕組みだが、この際の優先順位を決めたり、相手先のアドレスを明示している様だ。
CRCというのは、送受フレーム内信号列の誤りを検出する仕組みで、こういう仕掛けは、多くの記録メディア(HDD,DVDなど)の記録にも使用されている。エンドフレームはフレーム終了を示す約束信号だ。
具体例でCAN信号を見つつ説明したいが、下図のCANバス信号例からすると、信号の1、0はあるまとまりをもって意味をなす。つまり、大きく見るとフレームという大枠があり、この中をアービトレーション(調停)、コントロール(制御)、データ(送受データの核心)、CRC(データ整合性チェック)、フレームエンド信号という区分となる。
なお、CANは2.0Aから2.0Bへバージョンアップされて高速化されているが、高速化なされているのはデータ領域の周波数のみ上げて対応してる様だ。と云うのは、すべてを高速化すると、接続機器などに新旧があると互換性を失ってしまうことを避けるためという。