CAN通信からの制御 - MtLord/KRP_Central_micon GitHub Wiki

概要

Central miconではCAN通信によって命令とセンサ値の受け取り及び、パラメータ調整が可能である。モータシステムは標準フレーム、モジュールボードは拡張フレームを使用している。IDコードは大きく3つの部分に分かれる。以下は、モジュールボードのプロトコルである。

個体識別コード[3:0]

各ボードには複数枚同時に使うときのために個体識別コードが用意されている。ボードにプログラムを書き込むときに設定する。通常は複数枚使わないので0である。2021年8月3日現在実装済み。

ラベルコード[7:4]

送信は1つのIDにつき8バイトまでしか送れないので、それ以上を送信したい場合は複数回送信する。そのときにこの領域で識別する。 モータやステッピングモータの場合は動かしたいモータの個体識別番号が入る。例:M1は1 M5は5

命令識別コード[15:8]

命令コードである。厳密には上位4bitが役割に固有のID、下位4bitが命令に固有のIDとなっている。CAN通信ではコリジョン発生時IDが最も小さいものが優先されるため、上位4bitは優先度の高い命令からID番号が小さい。例えばエンコーダボードの命令は0x1?でセンサの命令は0x3?。 Inc->Libraries->DefineOrder.hに定義しているので知りたい人は見るといい。一覧を見たい人はリンク参照。

GET命令について(重要)

GetXなどのget命令はSendRequest()関数を使ってボードに対して送信要求を行うと即座に現在の数値を返信するようになっている。一定間隔で送信要求を行うとTX LEDとRX LEDが規則的に点滅する。不規則に点滅しているときはMCP2551のRSがはんだ付け不良なことが多い。