XScript マニュアル · Chapter 23
DEVICEMGR — デバイスマネージャ
DEVICEMGR はコンテナ(ラインノード)全体を管理するグローバルオブジェクトです。トレイ/マガジン
のように複数の位置に複数のデバイスがある場合は Row × Col マップで管理し、
デバイスの追加/削除/移動/照会を一括処理します。
基本例
xscript
int trayRowCount = DEVICEMGR.GetRowCount("Tray");
int trayColCount = DEVICEMGR.GetColumnCount("Tray");
// トレイ全体を Rank 1 で埋める
DEVICEMGR.MakeFull("Tray", 1);
if (DEVICEMGR.IsFull("Tray") == true)
{
Log("Tray Is Full. Col = {0}, Row = {1}", trayColCount, trayRowCount);
}
else
{
Log("Tray Is Not Full. Col = {0}, Row = {1}", trayColCount, trayRowCount);
}
int devCount = DEVICEMGR.GetDeviceCount("Tray");
Log("Before Remove, Device Count = {0}", devCount);
DEVICEMGR.RemoveDeviceMap("Tray", 0, 0);
devCount = DEVICEMGR.GetDeviceCount("Tray");
Log("After Remove, Device Count = {0}", devCount);実践例 — ユニット間の移動
xscript
// オーダーを次のユニットへ移動
DEVICEMGR.MoveDevice(DEVICE_NAME, unitIndex - 1, DEVICE_NAME, unitIndex);
// 最後のユニットで排出
DEVICEMGR.RemoveDevice(DEVICE_NAME, unitIndex);
// 全体カウントを確認
if (DEVICEMGR.GetDeviceCountAll() > 0)
{
// ラインにまだ物体が残っている
}メソッド
コンテナ管理
| シグネチャ | 説明 |
|---|---|
bool ClearContainerAll(void) | 全体初期化 |
bool AddContainer(string name, string sensorName = "", bool log = true) | コンテナ追加 |
デバイス追加/削除
| シグネチャ | 説明 |
|---|---|
bool AddDevice(string container) / AddDevice(string container, int index) | デバイス追加 |
bool RemoveDevice(string container) / RemoveDevice(string container, int index) | デバイス削除 |
bool RemoveDeviceMap(string container, int col, int row) | マップ座標で削除 |
bool ClearAllDevice(void) | 全削除 |
移動 · コピー
| シグネチャ | 説明 |
|---|---|
bool MoveDevice(string name1, int index1, string name2, int index2) | デバイス移動 |
照会
| シグネチャ | 説明 |
|---|---|
int GetRowCount(string container) | 行数 |
int GetColumnCount(string container) | 列数 |
int GetDeviceCount(string container) | 当該コンテナのデバイス数 |
int GetDeviceCountAll(void) | 全コンテナのデバイス数 |
bool IsFull(string container) | 満杯かどうか |
bool IsEmpty(string container) | 空かどうか |
マップ充填
| シグネチャ | 説明 |
|---|---|
bool MakeFull(string container, int rank) | 指定 Rank で充填 |
bool MakeEmpty(string container) | すべて空にする |
ヒント
- Tray/Cassette のような配列型コンテナは、
GetRowCount/GetColumnCountでサイズを照会した後、二重 for で走査します。 - 単一インデックスのコンテナ(ラインノード)は
AddDevice(name, index)で位置を指定します。 - 排出漏れを防ぐため、最後のユニットで必ず
RemoveDeviceを呼び出すか、ClearAllDeviceで初期化します。