CANネットワーク設定とID検索
本記事では、CANネットワーク設定、CAN0状態確認、CAN UUID検索、および一般的なCANエラーに関するトラブルシューティングについて説明します。
適用シーン:
- UTOCなどのUSB-CAN変換モジュールを使用してCANツールボードに接続する場合。
- USBブリッジCANファームウェアが書き込まれたメインボードを使用してCANツールボードに接続する場合。
- メインボードまたはツールボードにCANファームウェアが書き込まれており、CAN UUIDを検索する必要がある場合。
- KlipperでCAN0、CAN UUID、またはCANネットワーク関連のエラーが発生した場合。
使用前の注意
- UTOCまたはCANブリッジファームウェアが書き込まれたメインボードをUSB経由で上位機に接続します。
- シリアル接続ではなく、ネットワーク経由で上位機のバックエンドにログインしてください。
- FlyOS-FASTシステムでは、CAN0は1Mbps、1024バッファにプリセットされているため、通常は手動でCAN0を設定する必要はありません。
- ツールボードとメインボードのファームウェアのCANレートは、上位機のCAN0レートと一致している必要があります。
- CANバスの両端には終端抵抗が必要です。配線順序、抵抗、および電源の問題は、IDが見つからない原因となります。
CAN配線と終端抵抗
配線と終端抵抗は、CANネットワークで最も一般的な問題の原因です。
CAN-H/CAN-Lの配線順序、コネクタ、圧着、終端抵抗のジャンパーまたはディップスイッチを確認する前に、プリンターの電源を完全に切ってください。通電状態でのCAN線の抜き差し、ジャンパーキャップの調整、または抵抗の測定は行わないでください。
配線の確認
- 電源を切った状態で、CAN-HがCAN-Hに、CAN-LがCAN-Lに接続されていることを確認します。
- 電源を切った状態で、CAN線、コネクタ、圧着箇所を確認し、断線、緩み、接触不良がないことを確認します。
- UTOCを使用する場合は、正常なUSBデータケーブルを使用して上位機に接続してください。
- USBブリッジCANメインボードを使用する場合は、そのメインボードにUSBブリッジCANファームウェアが書き込まれていることを確認してください。
- 配線とケースを再度取り付けてから電源を入れ、CANデバイスがシステムに認識されていることを確認します。
終端抵抗の確認
CANバスの両端には、それぞれ 120Ω の終端抵抗が必要です。プリンター全体の電源を完全に切った状態で、マルチメータを使用してCAN-HとCAN-L間の抵抗値を測定します。
| 測定値 | 判断 |
|---|---|
約 60Ω | 正常。両端の終端抵抗が正しく接続されています |
約 120Ω | 通常、片側のみに終端抵抗があるか、断線しています |
約 40Ω | 余分な終端抵抗がある可能性があります。中間ノードを確認してください |
約 140Ω | CAN-H/CAN-Lの逆接続または回線異常の可能性があります |
終端抵抗の測定は、必ず完全に電源を切った状態で行ってください。完全に電源を切らずに操作すると、測定値が不正確になるだけでなく、デバイスを損傷する可能性もあります。
上位機がCANをサポートしているか確認する
FLY上位機ではこの手順はスキップできます。
以下のコマンドを実行して、カーネルのCANサポートを確認します。
sudo modprobe can && echo "カーネルはCANをサポートしています" || echo "カーネルはCANをサポートしていません"
カーネルはCANをサポートしています と表示された場合は、設定を続行できます。サポートしていないと表示された場合は、SocketCANをサポートするシステムイメージに交換することをお勧めします。
CANデバイスが認識されているか確認する
CAN IDを設定または検索する前に、上位機がUTOCまたはUSBブリッジCANデバイスを認識していることを確認することをお勧めします。
以下のコマンドを実行します。
lsusb
結果の判断:
1d50:606fが表示される:デバイスがシステムに認識されています。CAN IDの設定または検索を続行できます。lsusbが見つからないと表示される:usbutilsをインストールしてください。1d50:606fが表示されない:USBケーブル、UTOC、USBブリッジCANファームウェア、および電源を確認してください。- 複数の
1d50:606fが表示される:CANブリッジデバイスは1つだけ残し、複数のCAN0ソースが同時に接続されないようにすることをお勧めします。
usbutils のインストール:
sudo apt-get update
sudo apt-get install usbutils
システムがCANブリッジデバイスを認識して初めて、後続のCAN0設定とCAN ID検索が意味を持ちます。
CAN0の設定
この操作は既存のCAN0設定を上書きします。完了後、システムの再起動が必要です。FlyOS-FASTシステムではこの手順は不要です。
ネットワーク管理方式の判断
システムによって使用するネットワーク管理方式が異なります。CAN0を設定する前に、現在のシステムがどのようにネットワークを管理しているかを確認する必要があります。同じ can0 に対して複数の方式を同時に使用しないでください。設定が反映されなかったり、再起動後に失われたり、CAN0の状態が異常になる可能性があります。
以下のコマンドを実行して、一般的なネットワークサービスの状態を確認します。
systemctl is-active NetworkManager
systemctl is-active systemd-networkd
systemctl is-active networking
設定ファイルとデバイスの状態を確認することもできます。
ls /etc/network/interfaces /etc/network/interfaces.d/ 2>/dev/null
networkctl list 2>/dev/null
nmcli device status 2>/dev/null
結果に基づいて設定方式を選択します。
| 判断結果 | 説明 | 推奨方式 |
|---|---|---|
networking が active で、/etc/network/interfaces.d/ が存在する | Debian、Armbianなどのシステムで一般的 | ifupdown を使用 |
systemd-networkd が active で、networkctl list にネットワークデバイスが表示される | ネットワークが systemd-networkd によって管理されている | systemd-networkd を使用 |
NetworkManager が active で、nmcli device status にネットワークデバイスが表示される | ネットワークが NetworkManager によって管理されている | 以下の2つの設定を直接混在させず、現在のシステムのNetworkManager方式に従って処理することを優先 |
複数のサービスが active と表示される | システムがネットワーク管理を混在している可能性がある | 最初に can0 を実際に管理しているサービスを特定し、対応する方式を選択する |
現在のシステムがどの方式を使用しているか判断できない場合は、まずシステムイメージまたは上位機メーカーのドキュメントを参照することをお勧めします。FLY上位機およびFlyOS-FASTシステムでは、通常、CAN0を手動で設定する必要はありません。
CAN0設定の書き込み
ネットワーク管理方式を確認した後、実際のシステムに応じて対応する設定を選択します。
- ifupdown
- systemd-networkd
ifupdown
/etc/network/interfaces.d/ を使用してネットワークを管理するDebian、Armbianなどのシステムに適しています。1Mbpsの設定は以下の通りです。
sudo /bin/sh -c "cat > /etc/network/interfaces.d/can0" << EOF
allow-hotplug can0
iface can0 can static
bitrate 1000000
up ifconfig \$IFACE txqueuelen 1024
pre-up ip link set can0 type can bitrate 1000000
pre-up ip link set can0 txqueuelen 1024
EOF
500Kbpsのレートが必要な場合は、上記のコマンド内の 1000000 を 500000 に変更してから実行してください。
systemd-networkd
systemd-networkd を使用してネットワークを管理するシステムに適しています。1Mbpsの設定は以下の通りです。
ネットワーク設定ファイルを作成します。
sudo tee /etc/systemd/network/99-can.network > /dev/null <<'EOF'
[Match]
Name=can*
[CAN]
BitRate=1000000
RestartSec=100ms
EOF
リンク設定ファイルを作成します。
sudo tee /etc/systemd/network/99-can.link > /dev/null <<'EOF'
[Match]
OriginalName=can*
[Link]
TxQueueLength=1024
EOF
500Kbpsのレートが必要な場合は、BitRate=1000000 を BitRate=500000 に変更します。
設定が完了したら、デバイスを再起動します。
sudo reboot
CAN0状態の確認
再起動後、以下のコマンドを実行します。
ip -details link show can0
以下の項目を重点的に確認します。
bitrate:CAN通信レート。例:1000000は1Mbpsを意味します。qlenまたはtxqueuelen:送信キューの長さ。1024を推奨します。
can0 が見つからないと表示された場合は、まず以下を実行します。
ip link
lsusb
dmesg | grep -i can
一般的な原因:
- UTOCがシステムに認識されていないか、USBケーブルが電源供給のみに対応している。
- メインボードにUSBブリッジCANファームウェアが書き込まれていない。
- CAN0設定ファイルが有効になっていないか、システムが再起動されていない。
- システムイメージがSocketCANをサポートしていない。
CAN IDの検索
検索する前に、デバイスが検索可能な状態であることを確認してください。
- デバイスのUUIDが既に
printer.cfgに書き込まれ、Klipperによって正常に接続されている場合、検索コマンドでそのデバイスが再度リスト表示されないことがあります。 - 検索前に、対応する
[mcu]設定セクションを一時的にコメントアウトし、保存後にKlipperを再起動します。 - デバイスの電源を約10秒間切り、再度投入してから検索コマンドを実行します。
一般的な上位機で実行する場合:
~/klippy-env/bin/python ~/klipper/scripts/canbus_query.py can0
FLY上位機で実行する場合:
python3 ~/klipper/scripts/canbus_query.py can0
結果の判断:
Application: Klipper:このIDはそのままprinter.cfgに書き込んで使用できます。Application: CANBOOTまたはApplication: Katapult:デバイスがまだブートローダー状態です。最初にKlipperファームウェアを書き込む必要があります。- IDが1つも見つからない:以下の「IDが見つからない場合の確認手順」に従って、CAN0、配線順序、終端抵抗、電源、およびファームウェアの通信方式を確認してください。
CAN IDの記入方法
- プリンターのWebインターフェースを開き、左側の設定エントリから
printer.cfgを見つけます。 - 検索したUUIDを、対応する
[mcu]設定セクションのcanbus_uuid:の後に記入します。 - CAN接続を使用する場合、同じ
[mcu]にserial:とcanbus_uuid:の両方を残さないでください。 - 保存してKlipperを再起動します。
CANファームウェアの記入例:
[mcu]
canbus_uuid: xxxxxxxxxxxx
USBファームウェアでは serial: を、CANファームウェアでは canbus_uuid: を使用します。USBファームウェアからCANファームウェアに変更する場合は、元の serial: を削除またはコメントアウトする必要があります。
ドキュメント内のIDはすべて例です。各メインボードまたはツールボードのIDは異なります。実際に検索したIDを記入してください。
CANエラーのトラブルシューティング:CAN0とCAN IDが正しく設定されているにもかかわらず通信異常が発生する場合は、CANエラーのトラブルシューティング を参照してください。