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()を呼び出す → 以降の測定値が物理量として補正されます。 - ボード仕様を超える出力電圧設定は実際には適用されず、飽和します。