本ドキュメントでは、Alius DCU ドメインコントローラのすべての外部インターフェースについて詳しく説明します。ピン定義、電気的特性、接続方法、ソフトウェア開発インターフェースが含まれます。本ドキュメントを通じて、開発者は DCU の豊富な I/O リソースを十分に活用できます。
インターフェース概要
DCU ドメインコントローラは、ロボットシステムの多様な接続要件を満たすために、様々な産業標準インターフェースを提供します:
| インターフェースタイプ | 数量 | コネクタタイプ | 主な機能 |
|---|---|---|---|
| CAN-FD | 2 | 3 ピン端子台 | リアルタイム制御バス |
| RS-485 | 2 | 3 ピン端子台 | 産業機器通信 |
| EtherCAT | 2 | RJ45 | リアルタイムイーサネット制御 |
| ギガビットイーサネット | 1 | RJ45 | ネットワーク接続 |
| USB 3.0 | 2 | Type-A | 高速ペリフェラル |
| USB 2.0 | 2 | Type-A | ペリフェラル接続 |
| MIPI-CSI | 2 | FPC | カメラ入力 |
| MIPI-DSI | 1 | FPC | ディスプレイ出力 |
| デバッグシリアル | 1 | Micro USB | システムデバッグ |
| 電源入力 | 1 | 2 ピン端子台 | 9-36V 電源 |
CAN-FD インターフェース
CAN-FD(Controller Area Network with Flexible Data-Rate)は、より高いボーレートとより大きなデータペイロードをサポートする、クラシック CAN バスのアップグレードバージョンです。
ハードウェア仕様
- プロトコル標準:ISO 11898-1:2015(CAN 2.0A/B および CAN-FD)
- アービトレーションフェーズボーレート:最大 1 Mbps
- データフェーズボーレート:最大 5 Mbps
- データフレーム長:クラシック CAN 最大 8 バイト、CAN-FD 最大 64 バイト
- トランシーバ:TJA1044GT(NXP)、バス障害保護付き
- 絶縁電圧:2500 Vrms(信号とシステム地の間の電気的絶縁)
- 終端抵抗:120Ω、ソフトウェア経由で設定可能
ピン定義
| ピン | 名前 | 説明 | 推奨色 |
|---|---|---|---|
| 1 | CANH | 高レベル CAN 信号 | 黄色 |
| 2 | CANL | 低レベル CAN 信号 | 緑色 |
| 3 | GND | 信号地(絶縁地) | 黒色 |
Linux 使用方法
DCU は、Linux で CAN-FD インターフェースをネットワークデバイスとして公開し、標準の SocketCAN フレームワークを使用して開発できます。
CAN インターフェースの設定
# CAN0 を CAN-FD モードに設定、1Mbps アービトレーション、5Mbps データフェーズ
sudo ip link set can0 type can bitrate 1000000 dbitrate 5000000 fd on
sudo ip link set can0 up
# CAN1 を設定(クラシック CAN モード、1Mbps)
sudo ip link set can1 type can bitrate 1000000
sudo ip link set can1 up
CAN フレームの送信
// C 言語例:CAN-FD フレームの送信
#include <linux/can.h>
#include <linux/can/raw.h>
int s = socket(PF_CAN, SOCK_RAW, CAN_RAW);
struct sockaddr_can addr;
struct canfd_frame frame;
// CAN-FD フレームサポートを有効化
int enable_fd = 1;
setsockopt(s, SOL_CAN_RAW, CAN_RAW_FD_FRAMES, &enable_fd, sizeof(enable_fd));
frame.can_id = 0x123; // CAN ID
frame.len = 64; // CAN-FD 最大 64 バイト
frame.flags = CANFD_BRS; // ビットレート切り替えを使用
// データを埋める...
write(s, &frame, sizeof(frame));
Python 例
import can
# CAN バスインスタンスの作成
bus = can.interface.Bus(channel='can0', bustype='socketcan')
# メッセージの送信
msg = can.Message(
arbitration_id=0x123,
data=[0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88],
is_extended_id=False,
is_fd=True,
bitrate_switch=True
)
bus.send(msg)
# メッセージの受信
for msg in bus:
print(f"ID: {msg.arbitration_id:X}, Data: {msg.data.hex()}")
RS-485 インターフェース
RS-485 は、干渉防止能力が強く、伝送距離が長い差動信号シリアル通信標準で、産業環境で広く使用されています。
ハードウェア仕様
- プロトコル標準:TIA/EIA-485-A
- 最大ボーレート:12 Mbps
- 最大ケーブル長:1200 メートル(低速時)
- 差動信号振幅:1.5V - 5V
- レシーバ入力インピーダンス:≥ 12 kΩ
- 絶縁電圧:2500 Vrms
- 終端抵抗:120Ω、オンボードで設定可能
ピン定義
| ピン | 名前 | 説明 | 推奨色 |
|---|---|---|---|
| 1 | A (D+) | 正差動信号 | 黄色 |
| 2 | B (D-) | 負差動信号 | 緑色 |
| 3 | GND | 信号地 | 黒色 |
Linux 使用方法
RS-485 インターフェースは、Linux で標準シリアルデバイス(/dev/ttyS* または /dev/ttyUSB*)としてマップされます。
シリアルパラメータの設定
# RS485-0 を 115200 ボーレート、8 データビット、パリティなし、1 ストップビットに設定
stty -F /dev/ttyS1 115200 cs8 -cstopb -parenb
# RS-485 方向のハードウェア自動切り替えを有効化(推奨)
echo 1 > /sys/class/tty/ttyS1/rs485/rs485_enable
Python 例(Modbus RTU)
import serial
from pymodbus.client import ModbusSerialClient
# Modbus RTU クライアントの作成
client = ModbusSerialClient(
port='/dev/ttyS1',
baudrate=115200,
parity='N',
stopbits=1,
bytesize=8,
timeout=1
)
# 保持レジスタの読み取り
result = client.read_holding_registers(address=0, count=10, slave=1)
if result.isError():
print("通信エラー")
else:
print(f"レジスタ値: {result.registers}")
EtherCAT インターフェース
EtherCAT(Ethernet for Control Automation Technology)は、高性能リアルタイムイーサネットプロトコルで、特に多軸運動制御と分散 I/O システムに適しています。
ハードウェア仕様
- プロトコル標準:ETG 1000 シリーズ
- 物理層:100BASE-TX(100 Mbps 全二重)
- トポロジー:デイジーチェーン、ライン、ツリー
- サイクル時間:最小 1 ms(典型的なアプリケーション)、最小 100 μs まで可能
- 同期精度:< 1 μs(分散クロック)
- 最大スレーブ数:理論上 65535、32 以下に抑えることを推奨
使用方法
DCU は、EtherCAT マスターとしての実行をサポートします。Alius は、IgH EtherCAT Master に基づくソフトウェアスタックを提供します。
EtherCAT マスターソフトウェアのインストール
sudo apt install -y aliu-ethercat-master
sudo systemctl enable ethercat
sudo systemctl start ethercat
EtherCAT ネットワークの設定
# EtherCAT マスター設定を編集
sudo nano /etc/ethercat/master.conf
# 設定例:
# MASTER0_DEVICE="eth1"
# DEVICE_MODULES="generic"
EtherCAT スレーブの列挙
# バス上のスレーブデバイスをスキャン
sudo ethercat slave
# 出力例:
# 0 0:0 PREOP + Alius Joint Module v1.0
# 1 0:1 PREOP + Alius Joint Module v1.0
# 2 0:2 PREOP + Alius IMU Sensor v1.0
プロセスデータ通信(PDO)例
import ctypes
from aliu_ethercat import EtherCATMaster
# マスターインスタンスの作成
master = EtherCATMaster()
# スレーブのスキャンと初期化
master.scan()
master.set_state('OPERATIONAL')
# 周期的プロセスデータ交換
for cycle in range(1000):
# 目標位置の送信(PDO 出力)
master.write_outputs(slave_id=0, data=[target_pos])
# 実際の位置の読み取り(PDO 入力)
actual_pos = master.read_inputs(slave_id=0, size=4)
# 制御サイクル 1 ms
master.wait_sync()
イーサネットインターフェース
DCU は、ネットワーク接続、リモートデバッグ、データ転送に使用できる 1 つのギガビットイーサネットインターフェースを提供します。
ハードウェア仕様
- 速度:10/100/1000 Mbps 自動交渉
- 全二重サポート:はい
- PoE サポート:オプション(カスタマイズが必要)
- PHY チップ:Realtek RTL8211F
- コネクタ:インジケータライト付き RJ45
設定例
# 静的 IP の設定
sudo ip addr add 192.168.1.100/24 dev eth0
sudo ip link set eth0 up
# VLAN の設定(オプション)
sudo ip link add link eth0 name eth0.100 type vlan id 100
sudo ip addr add 192.168.100.100/24 dev eth0.100
MIPI-CSI カメラインターフェース
DCU は、ビジュアル知覚に使用できるカメラモジュールの接続に使用できる 2 つの MIPI-CSI インターフェースを提供します。
ハードウェア仕様
- 標準:MIPI CSI-2 v1.3
- データレーン:4 レーン/チャンネル
- 最大データレート:2.5 Gbps/レーン
- サポート解像度:最大 4K@60fps
- コネクタ:30 ピン FPC(0.5 mm ピッチ)
サポートされているカメラモジュール
- Sony IMX219(Raspberry Pi Camera v2)
- Sony IMX477(Raspberry Pi HQ Camera)
- Alius Vision Module(カスタムカメラモジュール)
使用方法
# カメラデバイスの確認
v4l2-ctl --list-devices
# 画像のキャプチャ
ffmpeg -f v4l2 -i /dev/video0 -vframes 1 capture.jpg
# GStreamer でのプレビュー
gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw,format=NV12,width=1920,height=1080 ! autovideosink
MIPI-DSI ディスプレイインターフェース
DCU は、ローカル HMI に使用できる LCD ディスプレイパネルの接続に使用できる 1 つの MIPI-DSI インターフェースを提供します。
ハードウェア仕様
- 標準:MIPI DSI v1.2
- データレーン:4 レーン
- 最大データレート:2.5 Gbps/レーン
- サポート解像度:最大 4K@60fps
- コネクタ:31 ピン FPC(0.3 mm ピッチ)
サポートされているディスプレイパネル
- Alius 7 インチ LCD パネル(1024×600、静電容量式タッチ)
- Alius 10.1 インチ LCD パネル(1280×800、静電容量式タッチ)
USB インターフェース
DCU は、様々なペリフェラルの接続に使用できる 4 つの USB ホストインターフェース(2× USB 3.0 + 2× USB 2.0)を提供します。
使用推奨
- USB 3.0:LiDAR、深度カメラ、NVMe SSD などの高速デバイスの接続に推奨します。
- USB 2.0:キーボード、マウス、WiFi モジュールなどの低速デバイスの接続に使用できます。
- 電源制限:各ポートの最大出力は 500 mA です。高電力デバイスを接続する場合は、外部電源付き USB ハブの使用を推奨します。