CAN(Controller Area Network)とは
CANは、ISOにて国際的に標準化されたシリアル通信プロトコルです。
これまで自動車産業では、安全性、快適性、低公害、低コストを求め、自動車の電子制御システムを様々に開発してきました。これらの制御システムは、システムごとに複数のバスラインに構成される場合が多く、ワイヤーハーネスの増加、それに伴う重量及びコストの増大が問題となっていました。そこで、”ワイヤーハーネスを削減する”、”複数のLANを介して大容量のデータを高速に通信する”ことを目的に、ドイツの電装メーカBOSCH社が自動車の電子制御システム向け通信プロトコルとしてCANを開発しました。
CANはISO11898で規格化され、自動車LANの標準プロトコルに位置づけられています。また、現在ではCANの高い性能と信頼性が認められ、FA、産業機器等、多方面にわたり使われています。
ISO11898ではデータリンク層がISO11898-1で規定され、2015年には従来のCAN(Classic CAN)に加えてCAN FDの仕様が追加されました。CANの物理層はISO11898-2でHighSpeed CAN(高速CAN)、ISO11898-3でLowSpeed CAN(低速CAN)をそれぞれ規定しています。本ページではISO11898-2 HighSpeed CANについて主に記載します
CANの特長
◆マルチマスタ(CSMA/CA方式)
バスが空いている時はバスに接続される全てのノードが送信を始めることが可能。
CSMA/CA(Carrier Sense Multiple Access/Collision Avoidance)方式によるメッセージ送信権の優先順位付けを実施。
◆外部からのノイズへの耐性
データの送信に差動電圧方式を採用することにより、外部からのノイズの影響を受けにくい。
◆エラーの検出・通知・リカバリー機能
全てのノードにエラーを検出・通知・リカバリー機能あり
CANの物理層
CANはCANH・CANLと呼ばれる通信線を使って送信、受信の両方を行っています。
CANの信号は、2本の通信線の電圧の差動によって送信されます。
電位差のない信号はレセシブといい論理値は1を指します。電位差のある信号はドミナントといい論理値は0を指します。
ドミナントとレセシブが通信バス上で衝突した場合には、ドミナントが優先されます。
また、双方の線にいくらかの電圧が加わってもCANH・CANLの両方に同じノイズが乗るため電圧の差には大きな変化がみられないことから、外部からのノイズに強いという性質があります
マルチマスタ方式
CANはバスが空いている時は、バスに接続される全てのノードがメッセージの送信を始めることが出来るマルチマスタ方式です。
バスに対して最初に送信を開始したノードが送信権を獲得し、同時に複数のノードが送信を始めた場合は、優先順位の高いIDのメッセージを送信しているノードが送信権を獲得することが可能なCSMA/CA方式を採用しています。
また、バスにつながるノードは、アドレスのような情報を所持していません。そのためバスにノードを追加または削除する場合、バスにつながる他のノードのソフトウェア、ハードウェアおよびアプリケーション層に変更を加える必要がなく、システムの設計に柔軟性があります。
アービトレーション(通信調停)
メッセージを送信するノードは通信バスの電圧を監視しており、送信したデータが本当にバスに流れているかを1bitずつ確認しています。2つのノードが同時に送信を行った場合、メッセージに含まれる識別子(ID)を使用し、送信優先権を付与することでメッセージの衝突を避ける仕組みがあります。このような仕組みをアービトレーション(通信調停)と呼び、このアービトレーションの仕組みによってCSMA/CA方式を実現しています。
通信調停負けした時点で、通信調停負けしたノードは送信を取りやめ、受信モードに移行します。通信調停を通過したノードがメッセージを送信し終えた後にメッセージを再送します。
CANのエラー
各ノードはエラー状態というステータスを持っています。
エラー状態とはエラーアクティブ、エラーパッシブ、バスオフの3つの状態を指し、各ノードの持つ送信エラーカウンタ、受信エラーカウンタの値に応じて、いずれかのステータスに分類されます。
CANは多重通信のため、1つのバスを複数のノードが使用しています。そこに故障したノードがずっといるとエラーフレームを大量に送信することになり、他の正常なノードの通信を妨げることになります。
エラーを多発するノードは通信から隔離することで、他のノードの通信を妨げない(故障の封じ込め)仕組みになっています。
エラーフレーム
エラー条件を検出したノードは、エラーフラグを出力することでエラーを他のノードへ通知します。
エラーフラグはノードのエラー状態によりアクティブエラーフラグ、またはパッシブエラーフラグを出力します。
送信ノードは、エラーフレーム出力後にデータフレームまたはリモートフレームの再送を行います。
※WEB公開されている図はもっと詳細に書かれているのですが、コピー防止のためにペーストした段階で消えてしまいます。
なので想像力で理解してくださいね(笑)
私が一番最初にCANを理解しなければいけないと思ったのがスロコンを装着したことによるECUプログラムのセーフモード切り替わりによる不調を何回か体験してからなんです。これはリーダーではこの部分の動作エラーとしか理解できないのでわからないままだと意味不明な故障と判断をしてしまいがち。
スロコンにより意図的な疑似増幅信号を電スロに動作信号を送信。ECUは正規の動作情報を持っているので、入力信号量に対して増幅信号による余分に大きな動作を行う電スロの状態を故障と判別し、セーフモードに切り替えを行う・・・こういった流れ。
スロットル動作回路内に介するスロコン自体も動作させなくても通電している限り抵抗となり通信速度に対する邪魔となるので撤去はしていないけれど接続は切っています。
私のノーマルベースのチューニングの考え方(これはJAF公式戦車両を作る上でのポイント)は純正ECUを含めた回路全体のロスをなくしきっちり設計値通りの働きを再現させてやるというものです。基本的にターボ車じゃない限り、エンジン内部に手を入れていないNA車両ならば基本の内燃機関の動作プロセスの精度を高めれば排ガス問題も騒音も関係なく性能を高められると考えています。
あえてやるならばAVOさんに協力を仰いでMOTECでフル制御が一番だと思います。
AVOさんの公開情報で群馬のラリーショップMさんのGRヤリスの事がありましたよ。AVOさんのダイノで300hpだそう。これはローラーシャシ台の370hp程度。1.6Lとしてはあまりにもパワーが出すぎるエンジンだそうで寿命なども考えてパワーが出すぎるエンジンをディチューンをするような形で詰めていったとの事です。
理想空燃比・・・運行状況により刻々変化→変化する事がもりだくさん(笑)
点火時期・・・上記と同じ
燃料噴射タイミング・・・上記に同じ
燃料噴射については燃料の霧の状態の良し悪しもあるのですが重要なのが噴射タイミングと時間なのです。これは火花のパターンと同じかな?
・・・以上です。
ブログ一覧 | 日記
Posted at
2022/02/18 08:24:11