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 で初期化します。