XScript マニュアル · Chapter 21

AIO — アナログ入出力

IO["名前"] でアクセスします。ロードセル·圧力センサ·サーボリファレンスのような 連続信号を扱う際に使用します。DIO と同じコンテナを使うため、名前規則(AI_ / AO_ 接頭)で区別するプロジェクトが多くあります。

基本例

xscript
// Analog Range 設定
IO["I_LoadCell"].SetAnalogRange(-5, 5);
 
double analogMin = 0;
double analogMax = 0;
IO["I_LoadCell"].GetAnalogRange(analogMin, analogMax);
Log("Analog Range // Min = {0}, Max = {1}", analogMin, analogMax);
 
// 出力電圧
IO["I_ForceModule"].SetAnalogVoltage(5.0);
 
// 入力電圧
double volt = 0.0;
IO["I_LoadCell"].GetAnalogVoltage(volt);

実践例 — ロードセルの安定化測定

連続読み取りで安定を判定し、代表値を確保します。

xscript
double preValue;
bool stable = OFF;
int STABLE_DIFF = 30;
 
for (i, 0, 4)
{
    preValue = TestBowlWeight;
    IO[loadcell].GetAnalogValue(TestBowlWeight);
 
    if (i > 0 && MATH.Abs(TestBowlWeight - preValue) < STABLE_DIFF)
    {
        Log($"LoadCell Stable PASS >> i={i}, weight={TestBowlWeight}");
        stable = ON;
        break;
    }
    Sleep(1000);
}
 
if (stable == OFF)
{
    LogError($"LoadCell Stable FAILED: {TestBowlWeight}");
    return false;
}

メソッド

シグネチャ説明
bool SetAnalogRange(double min, double max)入·出力レンジ設定(V)
bool GetAnalogRange(double &min, double &max)現在のレンジ取得
bool SetAnalogVoltage(double value)アナログ電圧出力
bool GetAnalogVoltage(double &value)現在の入力電圧読み取り
bool GetAnalogValue(ref double value)スケール適用後の現在値(g·kPa など)
bool SetAnalogScale(double scale)電圧→物理量のスケール係数設定
bool SetAnalogTareClear(void)Tare(ゼロ点)クリア

ヒント

  • 出力前に SetAnalogRange でレンジを先に合わせる → スケーリングエラーを防止。
  • ロードセルは短周期で複数回サンプリングし、差(Δ)が閾値以下なら安定と判定します。
  • ゼロ点は空の状態で SetAnalogTareClear() を呼び出す → 以降の測定値が物理量として補正されます。
  • ボード仕様を超える出力電圧設定は実際には適用されず、飽和します。