XScript 매뉴얼 · Chapter 21
title: "AIO — 아날로그 입출력" chapter: 21 images:
- xscript-aio-example.png
AIO — 아날로그 입출력
IO["이름"] 으로 접근. 로드셀·압력 센서·서보 레퍼런스 같은 연속 신호를 다룰 때
사용합니다. DIO 와 동일한 컨테이너를 사용하므로 이름 규칙(AI_ / AO_ 접두)으로
구분하는 프로젝트가 많습니다.
캡처 대기
public/manual/gui/xscript-aio-example.png기본 예제
// 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);실전 예제 — 로드셀 안정화 측정
연속 읽기로 안정화 판정 후 대표값 확보.
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()호출 → 그 이후 측정값이 물리량으로 보정됨. - 보드 스펙을 초과하는 출력 전압 설정은 실제로 적용되지 않고 포화됨.