まずはご相談ください!
お問い合わせはコチラ
TOPICS
ABH3をCANで動かそう!①
2021.06.30
CANとはController Area Networkの略称で、ロバート・ボッシュ社によって開発されたシリアル通信仕様です。その後、ISO(国際標準化機構)により国際標準規格となっています。元々は、自動車内の複数の制御機器を接続して通信することを目的としており、現在販売されているほとんどの自動車にはCANを伴うOBD2のコネクタが搭載されています。
CANは、半二重シリアル通信を行うためのプロトコルであり、通信を行う複数の機器はバスにより接続されます。接続される機器に親子関係は無く、バスが空いているときは誰でも何時でも送信を行う事ができます。複数の機器が同時に送信を開始したときは、それぞれの機器自身が調停を行い、優先権の高い機器が送信権を得ることができます。この優先権を決めるために、通信パケット毎にIDを付与しますが、11bitの標準IDと29bitの拡張IDがあり、後述するJ1939プロトコルでは29bitの拡張IDを使用します。CAN通信のボーレートは最大1Mbpsとなっていますが、J1939-11規格では最大250kbps、J1939-12規格では500kbpsが仕様となっています。ただし、弊社ABH3ドライバのCAN仕様では、それに加え1Mbpsも設定することができます。
1パケットで送信できるデータは0~8バイト(64bit)となっており、29bitの拡張IDでは下図のようなデータ構成となります。
CANの物理層では下図のようにCAN-H/CAN-Lの2本の信号線により接続されますが、弊社機器は入力保護のためにツェナーダイオードを接続しているため、信号レベルを合わせるためにCAN-GNDの接続をお願いしています。また、バスの両端には終端抵抗として120[Ω]の抵抗が必要になります。
J1939プロトコルは、CAN通信仕様を用いトラック・バスや建設機械車両の制御を行うためにSAE(米国自動車技術者協会)が仕様をまとめました。J1939では、29bitの拡張IDに機器種別割当て、機器毎にその機器で通信するデータも定義されています。ABH3のJ1939仕様では、メーカ毎に自由に定義できる領域を使用して機能を割り付けています。29bitの拡張IDは下図のように割り当てられています。
Priorityはパケットの優先度を表し、任意の値を設定できます。Source Addressは送信元の機器のアドレスを設定し、その他のデータは機器仕様に基づき設定されます。
ABH3では以下の2種類のPDU Formatを使用して通信を行います。
ABH3への速度/電流指令は「ABH3への指令」を用い、その結果として「ABH3からの応答」が返ります。また、リクエストや一定周期毎に各種「ABH3からの情報発信」を行えます。この「ABH3からの情報発信」パケットは6種類あり、その中には速度指令や電流指令を送信することが可能です。例えば2台以上接続されたABH3の指令値を他のABH3の指令値として使用することができ、同期運転等の多彩な制御を行う事ができます。
『LinuxによるABH3とのCAN通信について』