本ドキュメントでは、Alius DCU ドメインコントローラのすべての外部インターフェースについて詳しく説明します。ピン定義、電気的特性、接続方法、ソフトウェア開発インターフェースが含まれます。本ドキュメントを通じて、開発者は DCU の豊富な I/O リソースを十分に活用できます。

インターフェース概要

DCU ドメインコントローラは、ロボットシステムの多様な接続要件を満たすために、様々な産業標準インターフェースを提供します:

インターフェースタイプ数量コネクタタイプ主な機能
CAN-FD23 ピン端子台リアルタイム制御バス
RS-48523 ピン端子台産業機器通信
EtherCAT2RJ45リアルタイムイーサネット制御
ギガビットイーサネット1RJ45ネットワーク接続
USB 3.02Type-A高速ペリフェラル
USB 2.02Type-Aペリフェラル接続
MIPI-CSI2FPCカメラ入力
MIPI-DSI1FPCディスプレイ出力
デバッグシリアル1Micro USBシステムデバッグ
電源入力12 ピン端子台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Ω、ソフトウェア経由で設定可能

ピン定義

ピン名前説明推奨色
1CANH高レベル CAN 信号黄色
2CANL低レベル CAN 信号緑色
3GND信号地(絶縁地)黒色

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Ω、オンボードで設定可能

ピン定義

ピン名前説明推奨色
1A (D+)正差動信号黄色
2B (D-)負差動信号緑色
3GND信号地黒色

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 ハブの使用を推奨します。