4C Spiderのブレーキフルード充填、ABSエア抜きの記録。
8月7日辺りにやってたことを、今書いてます。(^^;;
2026年09月26日 4C ABS エア抜きのPythonのプログラムコード
この続きです。
グーグルの検索AIで作れるぞというので、作らせた4C ABS エア抜きのPythonのプログラム。
何とか動いたけど、そもそも、ABSのブレーキフルードどういう風に使われて、ABSが作動してるのか、何となくは分かってたけど、きっちり調べたことがなかった。
ということで、ちゃんと調べることに。(^^;;
BOSCH ABSで検索すると、それなりに出てくるんですけど、
https://www.bosch-classic.com/de/en/services/downloads/
このサイトに、BOSCHが用意してる説明が載ってた。 (^^)
そこにあった、ABSの説明PDFがこれ。
そのなかの右上にある、フルード回路の説明。
この説明は、ABSだけなので、横滑り防止装置とかトラクションコントロールとかはなし。
それ用の、バルブがどこに配置されているかは、AIとのやりとりで分かった。
後に調べて出て来たのが、
これ。Bosch ABS 5.7の図だけど、基本構成は ABS 9も同じだとAIが言ってた。(^^;;
バルブは、全部で12個あって、赤〇のバルブは、通常閉じてて、それ以外のバルブは、通常開いてます。
下の4つの赤〇バルブ(xxAV)は、ABS作動時にキャリパーのフルード圧を抜くときに開きます。
そのタイミングで、通常開いてるバルブ(xxEV)4つは、各車輪のABSの作動状況に応じて、キャリパーに圧がかからないように閉じます。
その開閉を素早くやって、タイヤのグリップを取り戻すようにするんですね。
A1,A2は、低圧アキュムレータで、ABS作動時に抜くフルード圧を素早く吸収するためのものだそうです。
RVR1,RVR2は、図中上方向にだけ流すワンウェイバルブで、フルードの逆流を防ぎます。
その後、ポンプがフルードを吸い上げて、マスターシリンダー側に押し出します。このときの圧が、ブレーキペダルに伝わって、ABSが作動したと分かるんですね。
モーターMは1つで、ポンプ二つsRP1,sRP2を同時に動かしますが、バルブの制御で変なことにならないように上手くなってるようです。(^^)
上の2つの赤〇バルブHSV1,HSV2は、ESP(Electronic Stability Program)作動時に車がブレーキを掛けるとき、キャリパーに送るフルードを吸い込むタイミングで、必要な回路の方が開きます。そのとき、油圧が逃げないように、対応するUSV1,USV2のどちらかが閉じて、さらに、その回路(2系統のどちらか)のブレーキをかけない側のxxEVが閉じて、ポンプモーターが回って、特定の車輪のブレーキをかけます。
D1,D2は、ダンパーだそうで、ポンプが動いたときの衝撃を吸収するんだそうです。ポンプなんて回転してるんだろうから、衝撃なんてないだろうと思ったら、ポンプは回転しないんです。 (^^;;
勿論、モーターは回転しますけど。
ポンプは、こんな仕掛けになってるそうです。
△は、ワンウェイバルブで、2個付いてます。
シリンジ内のピストンをモーターで出し入れする仕掛けになってるそうで、その動きで、水色矢印の方向に、フルードが動いて、結果、上に流れて行くと。
そのときに起こる振動を吸収するために、ダンパーが用意されていると。
ざっくり、そんな仕掛けになってる様です。
ESPは、後輪だけ制御すると思ってたんですけど、前輪も制御するんですね。 (^^;; 今回あれこれ調べて知りました。
ABS 9は、図のABS 5.7より改良されてて、ポンプのピストンが3個に増えてて、モーターの回転角で120度ずれてそれぞれ作動するようになってて性能アップしてるんだとか。
ブレーキフルードの制御方法がざっくり分かったところで、 ABS エア抜きのPythonプログラムです。
ちなみに、プログラムを生成する前に、各バルブやモーターの制御コマンドも、Multiecuscanの動作から、AIに学習させてました。
前回は、Pythonプログラムコード全部を掲載しましたが、フルード圧に関する部分だけ抜き出すと、
# --- 回路1 (FR/RL系統) の処理 ---
print("💡 回路2 (FL/RR) のDrainバルブを開放し、内部循環させてポンプ負荷を抜きます。")
send_and_wait("2F5AB203FF", "6F5AB203") # 6Fで始まる肯定応答を確認
send_and_wait("2F5AB803FF", "6F5AB803")
print("💡 回路1の大元ダムバルブを閉じ、大元タンクからの吸入弁を開きます。")
send_and_wait("2F5AB903FF", "6F5AB903")
send_and_wait("2F5ABB03FF", "6F5ABB03")
print(f"🚀 ポンプモーターを高速パルス駆動し、{target_name} へフルードを圧送します!")
for i in range(4): # 安全のためMESと全く同じ4回パルス限定
print(f" パルスパージ中... ({i+1}/4)")
send_and_wait("2F5AAF03FF", "6F5AAF03") # ポンプON命令 ➡️ 肯定応答待ち
time.sleep(0.25) # 250ms油圧保持
send_and_wait("2F5AAF0300", "6F5AAF03") # ポンプOFF命令 ➡️ 肯定応答待ち
time.sleep(0.40) # 400ms待機
これだけの部分です。
これは、片側の回路ですが、もう片側の回路も処理は同じで、指令を送ってるバルブが異なるだけです。
8月上旬のことなので、記憶が定かでないんですけど、このプログラム、左側からフルードが出てこなかったので、出てきやすくしようと、手を加えた後のものの様です。 (^^;;
元々は、
send_and_wait("2F5AB903FF", "6F5AB903")
これで、USVxを閉じて、
send_and_wait("2F5ABB03FF", "6F5ABB03")
これで、HSVxを開いてます。
そのあと、
send_and_wait("2F5AAF03FF", "6F5AAF03") # ポンプON命令 ➡️ 肯定応答待ち
time.sleep(0.25) # 250ms油圧保持
send_and_wait("2F5AAF0300", "6F5AAF03") # ポンプOFF命令 ➡️ 肯定応答待ち
time.sleep(0.40) # 400ms待機
で、ポンプを断続的に動かしてます。
ESPの仕掛けを使って、片側の回路のフルードをポンプを使って、タンク(マスターシリンダー)側からキャリパー側に流してます。
この処理自体は、問題ないので、エア咬みがあって、フルードが出てこないんだろうと思って、モーターの負荷を減らすために、
反対側の回路の二つのABS作動時にフルードを吸い込む側のバルブを
print("💡 回路2 (FL/RR) のDrainバルブを開放し、内部循環させてポンプ負荷を抜きます。")
send_and_wait("2F5AB203FF", "6F5AB203") # 6Fで始まる肯定応答を確認
send_and_wait("2F5AB803FF", "6F5AB803")
この処理で、開いてます。
このことで、フルードを流さない側の負荷を減らそうと思ったんですよね。
そんなことしても、出てこなくて。 (^^;;
そのときの結論は、大量のエアがまだABSユニットかどこかに溜まってて、その影響で、左側だけフルードがでてこないんだろう。 (^^;;
になりました。
Multiecuscanの処理は、ちゃんとなってた。 (^^;;
じゃあ、どうする?