uirSDK3 — UIROBOT システム開発キット
uirSDK3 — UIROBOT システム開発キット。UIROBOT の CAN bus モーションコントローラ、サーボステッピングモータ、I/O モジュールをプログラミングするためのクロスプラットフォーム開発キット。
# uirSDK3 — UIROBOT システム開発キット
uirSDK3 は、UIROBOT の CAN bus モーションコントローラ、サーボステッピングモータ、I/O モジュールをプログラミングするためのクロスプラットフォーム開発キットです。Windows、Linux、Raspberry Pi システム向けの包括的な C/C++ API 関数を提供し、モータ制御、I/O 操作、リアルタイム通知への完全なアクセスを備えたカスタム制御アプリケーションの構築を可能にします。
---
## 主な特長
:::grid{cols=2 style=card}
**クロスプラットフォーム対応**
Windows(32/64 ビット)、Linux、Raspberry Pi(32/64 ビット)向けネイティブライブラリ。プラットフォーム固有の DLL/SO ファイルで全プラットフォーム同一 API を使用。
**完全な API カバレッジ**
CAN ネットワーク管理、モータ制御、I/O 操作、エンコーダ読み取り、リアルタイム通知を含むすべてのデバイス機能に統合 API でアクセス。
**マルチゲートウェイサポート**
UIM2513(RS232-CAN)、UIM2523(Ethernet-CAN)、UIC320/UIC322(USB-CAN)ゲートウェイ経由で接続。単一 API ですべてのゲートウェイタイプを処理。
**リアルタイム通知**
コールバック関数を登録して、モーション完了、入力変更、ストール検出、エラーアラートなどのリアルタイムイベントを受信。
:::
:::grid{cols=2 style=card}
**C++ および C# サンプルコード**
完全なソースコード付きの Visual Studio(C++)および C# のすぐに使えるデモプロジェクト。Win32 および Win64 ビルドを含む。
**シンプルなプログラミングモデル**
ゲートウェイを開く → メンバーリストを取得 → コマンドを送信。最小限のボイラープレートコードで開始。
**エラーハンドリング**
説明的な定義付きの包括的なエラーコード。詳細なエラーレポートで容易なデバッグ。
**包括的なドキュメント**
すべての API 関数の関数説明、パラメータテーブル、データ構造、コード例を含む完全なプログラマーズマニュアル。
:::
---
## 対応プラットフォーム
| プラットフォーム | ライブラリファイル | アーキテクチャ |
|--------------|----------------|-------------|
| Windows | libUirSdkWin32.dll / .lib | 32 ビット |
| Windows | libUirSdkWin64.dll / .lib | 64 ビット |
| Linux | libUirSdk.so | 64 ビット |
| Raspberry Pi | libUirSdkRaspi32.so | 32 ビット |
| Raspberry Pi | libUirSDKRaspi64.so | 64 ビット |
---
## SDK パッケージ内容
```
uirSDK/
├── uirSDKFiles/
│ ├── CAN30SDK.h # スタティックライブラリ関数 API
│ ├── CAN30SDK_DLL.h # ダイナミックライブラリ関数 API
│ ├── UIError.h # エラータイプ定義
│ └── uirSDKgen3.h # 全構造体と型定義
└── UirSdkLib/
├── libUirSdk.so # Linux スタティックライブラリ
├── libUirSdkWin32.dll # Windows 32 ビット DLL
├── libUirSdkWin64.dll # Windows 64 ビット DLL
├── libUirSdkWin32.lib # Windows 32 ビット LIB
└── libUirSdkWin64.lib # Windows 64 ビット LIB
```
---
## 対応デバイス
| デバイス | タイプ | 説明 |
|---------|------|------|
| UIM342 / UIM342A | モーションコントローラ | CAN bus スマートサーボステッピングモータコントローラ |
| UIM620 | モーションコントローラ | CAN bus モーションコントローラシリーズ |
| UIM720 | モーションコントローラ | CAN bus モーションコントローラシリーズ |
| UIM1616 / UIM0808 | I/O コントローラ | CAN bus デジタル I/O コントローラ |
---
## API 関数一覧
### CAN ネットワーク
| 関数 | 説明 |
|------|------|
| `SdkStartCanNet` | CAN ネットワークを開きデバイスを検出 |
| `SdkCloseCanNet` | CAN ネットワーク接続を閉じる |
| `SdkGetGtwyInfo` | ゲートウェイ情報を取得 |
| `SdkGetMemberList` | 接続されているデバイスのリストを取得 |
| `SdkSetIPaddr` | Ethernet ゲートウェイの IP アドレスを設定 |
### 通信パラメータ
| 関数 | 説明 |
|------|------|
| `SdkSetProtocolPara` | 通信パラメータを設定 |
| `SdkGetProtocolPara` | 通信パラメータを取得 |
### システム情報
| 関数 | 説明 |
|------|------|
| `SdkGetSerial` | デバイスのシリアル番号を取得 |
| `SdkGetModel` | デバイスのモデル情報を取得 |
| `SdkGetErrReport` | エラーレポートを取得 |
| `SdkClrErrReport` | エラーレポートをクリア |
| `SdkGetLastErr` | 最新のエラーを取得 |
| `SdkGetMotionStatus` | モーションステータスを取得 |
| `SdkRstMotionStatus` | モーションステータスをリセット |
| `SdkGetSystemTime` | システム通電時間を取得 |
| `SdkRstSystemTime` | システム通電時間をリセット |
| `SdkSetSystem` | システム操作(再起動/工場出荷時リセット)|
### モーション制御 — 静的パラメータ
| 関数 | 説明 |
|------|------|
| `SdkSetMotorConfig` | モータ設定を設定 |
| `SdkGetMotorConfig` | モータ設定を取得 |
| `SdkSetAcceleration` | 加速度を設定 |
| `SdkGetAcceleration` | 加速度を取得 |
| `SdkSetDeceleration` | 減速度を設定 |
| `SdkGetDeceleration` | 減速度を取得 |
| `SdkSetCutInSpeed` | カットイン速度を設定 |
| `SdkGetCutInSpeed` | カットイン速度を取得 |
| `SdkSetStopDeceleration` | 緊急停止減速度を設定 |
| `SdkGetStopDeceleration` | 緊急停止減速度を取得 |
| `SdkSetEncoderConfig` | エンコーダパラメータを設定 |
| `SdkGetEncoderConfig` | エンコーダパラメータを取得 |
| `SdkSetBacklashComp` | バックラッシ補正を設定 |
| `SdkGetBacklashComp` | バックラッシ補正を取得 |
| `SdkSetMotionLimits` | モーションリミットを設定 |
| `SdkGetMotionLimits` | モーションリミットを取得 |
| `SdkRstMotionLimits` | モーションリミットをリセット |
| `SdkSetLimitCheck` | リミットチェック状態を設定 |
| `SdkGetLimitCheck` | リミットチェック状態を取得 |
| `SdkGetDesiredValue` | 目標値を取得 |
### モーション制御 — 動的パラメータ
| 関数 | 説明 |
|------|------|
| `SdkSetMotorOn` | モータドライバを有効/無効 |
| `SdkGetMotorOn` | モータ有効状態を取得 |
| `SdkSetBeginMxn` | 動作開始 |
| `SdkSetStopMxn` | 緊急停止 |
| `SdkSetOrigin` | 原点位置を設定 |
| `SdkSetJogMxn` | JOG 動作速度を設定 |
| `SdkGetJogMxn` | JOG 動作速度を取得 |
| `SdkSetPtpMxnA` | PTP 絶対位置を設定 |
| `SdkGetPtpMxnA` | PTP 絶対位置を取得 |
| `SdkSetPtpMxnR` | PTP 相対位置を設定 |
| `SdkGetPtpMxnR` | PTP 相対位置を取得 |
### I/O 操作
| 関数 | 説明 |
|------|------|
| `SdkSetTriggerMode` | ポートトリガモードを設定 |
| `SdkGetTriggerMode` | ポートトリガモードを取得 |
| `SdkSetDigitalOutput` | デジタル出力を設定 |
| `SdkGetDIOport` | I/O ポートのデジタル状態を取得 |
| `SdkSetInputLogicAC` | 入力ロジック加速度を設定 |
| `SdkGetInputLogicAC` | 入力ロジック加速度を取得 |
| `SdkSetInputLogicDC` | 入力ロジック減速度を設定 |
| `SdkGetInputLogicDC` | 入力ロジック減速度を取得 |
| `SdkSetInputLogicSP` | 入力ロジック速度を設定 |
| `SdkGetInputLogicSP` | 入力ロジック速度を取得 |
| `SdkSetInputLogicPR` | 入力ロジック相対位置を設定 |
| `SdkGetInputLogicPR` | 入力ロジック相対位置を取得 |
| `SdkSetInputLogicPA` | 入力ロジック絶対位置を設定 |
| `SdkGetInputLogicPA` | 入力ロジック絶対位置を取得 |
| `SdkSetInputLogic` | 入力ロジックアクションを設定 |
| `SdkGetInputLogic` | 入力ロジックアクションを取得 |
### I/O モジュール(UIM1616)
| 関数 | 説明 |
|------|------|
| `SdkSetEncoderPeriod` | 補助エンコーダ周期を設定 |
| `SdkRstEncoderCount` | 補助エンコーダカウントをリセット |
| `SdkGetEncoderSpeed` | 補助エンコーダ速度を取得 |
| `SdkGetEncoderCount` | 補助エンコーダカウントを取得 |
| `SdkGetEncoderIncrement` | 補助エンコーダ増分を取得 |
### リアルタイム通知
| 関数 | 説明 |
|------|------|
| `SdkGetRTCN` | リアルタイム通知メッセージを取得 |
---
## 主要データ構造
### ゲートウェイ情報
```cpp
typedef union _GATEWAY_INFO_OBJ {
struct {
uint GtwyHandle; // ゲートウェイハンドル
uint COMidx; // シリアルポート番号
uint COMbaud; // ボーレート
uint BTRidx; // CAN ビットレート
uint SerialNo; // ゲートウェイ SN
uint FirmVer; // ファームウェアバージョン
char ModelStr[64]; // モデル情報
uint MemberQty; // メンバー数
uchar MemberCid[100]; // メンバー CAN-ID リスト
};
struct { // Ethernet ゲートウェイ用
uint GtwyHandle;
uint IPaddr;
uint IPport;
} tcp;
} GATEWAY_INFO_OBJ;
```
### メンバー情報
```cpp
typedef struct _MEMBER_INFO_OBJ {
uint GtwyHandle; // ゲートウェイハンドル
uchar CANnid; // デバイス CAN-ID
uchar CANgid; // グループ CAN-ID
ushort COMbaud; // ボーレート
uint SerialNo; // デバイスシリアル番号
MODEL_INFO_OBJ Model; // モデル情報
} MEMBER_INFO_OBJ;
```
### UI メッセージ
```cpp
typedef struct _UI_MSG_OBJ {
uchar id; // CAN ID
uchar cw; // 制御ワード
uchar dl; // データ長
uchar data[9]; // データ配列
uint ix; // サブインデックス(予約)
} UI_MSG_OBJ;
```
---
## クイックスタート
### 手順 1 — ヘッダーをインクルード
```cpp
#include "CAN30SDK_DLL.h"
#include "uirSDKgen3.h"
```
### 手順 2 — CAN ネットワークを開く
```cpp
GATEWAY_INFO_OBJ Gtwy = {0};
MEMBER_INFO_OBJ Member[100];
// RS232 ゲートウェイ(UIM2513)の場合
Gtwy.detail.type = UIGW3_GW2513;
Gtwy.COMidx = 7; // COM ポート番号
Gtwy.COMbaud = 57600; // ボーレート
// ネットワークを開く
ERRO err = SdkStartCanNet(&Gtwy, Member, 0);
if (err) {
printf("CAN ネットワークを開けませんでした\n");
return -1;
}
uint g_GtwyHandle = Gtwy.GtwyHandle;
int memberCount = Gtwy.MemberQty;
```
### 手順 3 — モータを制御
```cpp
uint NodeID = 5; // モータノード ID
// モータを有効化
SdkSetMotorOn(g_GtwyHandle, NodeID, 1, NULL);
// 速度を設定し JOG 動作を開始
int speed = 1000; // 1000 パルス/秒
SdkSetJogMxn(g_GtwyHandle, NodeID, speed, NULL);
SdkSetBeginMxn(g_GtwyHandle, NodeID, 0, NULL);
// ... 動作中 ...
// 緊急停止
SdkSetStopMxn(g_GtwyHandle, NodeID, 0, NULL);
// モータを無効化
SdkSetMotorOn(g_GtwyHandle, NodeID, 0, NULL);
```
### 手順 4 — ネットワークを閉じる
```cpp
SdkCloseCanNet(g_GtwyHandle);
```
---
## プログラミングフロー
```
┌─────────────────────────────────────────────────────────────┐
│ uirSDK3 プログラミングフロー │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. CAN ネットワークを開く │
│ └──> SdkStartCanNet() │
│ │
│ 2. デバイスリストを取得 │
│ └──> SdkGetMemberList() │
│ │
│ 3. モータ設定(オプション) │
│ ├──> SdkSetMotorConfig() │
│ ├──> SdkSetAcceleration() │
│ └──> SdkSetMotionLimits() │
│ │
│ 4. モータを有効化 │
│ └──> SdkSetMotorOn(1) │
│ │
│ 5. 動作を実行 │
│ ├──> JOG: SdkSetJogMxn() + SdkSetBeginMxn() │
│ └──> PTP: SdkSetPtpMxnA/R() + SdkSetBeginMxn() │
│ │
│ 6. ステータス監視 │
│ ├──> SdkGetMotionStatus() │
│ └──> SdkGetRTCN()(リアルタイム通知) │
│ │
│ 7. 停止と無効化 │
│ ├──> SdkSetStopMxn() │
│ └──> SdkSetMotorOn(0) │
│ │
│ 8. ネットワークを閉じる │
│ └──> SdkCloseCanNet() │
│ │
└─────────────────────────────────────────────────────────────┘
```
---
## サンプルコードプロジェクト
| プロジェクト | プラットフォーム | 言語 | 説明 |
|-----------|--------------|------|------|
| Win32_Cpp_libUirSdkWin32_UIM342 | Windows 32 ビット | C++ | UIM342 モータ制御例 |
| Win64_Cpp_libUirSdkWin64_UIM342 | Windows 64 ビット | C++ | UIM342 モータ制御例 |
| Win32_Cpp_libUirSdkWin32_UIM1616 | Windows 32 ビット | C++ | UIM1616 I/O 制御例 |
| Win64_Cpp_libUirSdkWin64_UIM1616 | Windows 64 ビット | C++ | UIM1616 I/O 制御例 |
| Win32_C#_libUirSdkWin32_UIM342 | Windows 32 ビット | C# | UIM342 モータ制御例 |
| Win64_C#_libUirSdkWin64_UIM342 | Windows 64 ビット | C# | UIM342 モータ制御例 |
| Win32_C#_libUirSdkWin32_UIM1616 | Windows 32 ビット | C# | UIM1616 I/O 制御例 |
| Win64_C#_libUirSdkWin64_UIM1616 | Windows 64 ビット | C# | UIM1616 I/O 制御例 |
---
## エラーコード
| エラーコード | 説明 |
|------------|------|
| 0 | エラーなし(成功)|
| !0 | エラーコード(UIError.h 参照)|
---
## アプリケーション
:::grid{cols=3 style=card}
**カスタム制御ソフトウェア**
特定の生産ラインや医療機器向けに調整された制御インターフェースを構築。すべてのモータおよび I/O 機能への完全なアクセス。
**システム統合**
UIROBOT モータを既存の PLC または SCADA システムに統合。SDK は生の CAN プロトコルの上にクリーンな API レイヤーを提供。
**多軸協調制御**
複数のモータを同時に制御して協調動作を実現。リアルタイム通知を使用して同期操作を実行。
:::
---
## 関連製品
| 製品 | 説明 |
|------|------|
| UIM342 / UIM342A | CAN bus スマートモータコントローラ |
| UIM620 | CAN bus モーションコントローラ |
| UIM720 | CAN bus モーションコントローラ |
| UIM1616 / UIM0808 | CAN bus デジタル I/O コントローラ |
| UIM2513 | RS232 to CAN ゲートウェイ |
| UIM2523 | Ethernet to CAN ゲートウェイ |
---
## リソース
:::tip
uirSDK パッケージ、サンプルコード、ドキュメントは [UIROBOT ダウンロードセンター](https://www.uirobot.com/serve/list-437.html) からダウンロードできます。
:::
- 📖 [uirSDK3 ユーザーマニュアル V4.7 (PDF)](https://www.uirobot.com/uploads/files/f30fdec2ef52855e328edf9abcbd1d4e.pdf)
- 💻 [サンプルコード(C++、C#)](https://www.uirobot.com/serve/list-437.html)
---
*最終更新: 2026-07-03 | uirSDK3 ユーザーマニュアル V4.7 に基づく*