XScript 매뉴얼 · Chapter 21

title: "AIO — 아날로그 입출력" chapter: 21 images:

  • xscript-aio-example.png

AIO — 아날로그 입출력

IO["이름"] 으로 접근. 로드셀·압력 센서·서보 레퍼런스 같은 연속 신호를 다룰 때 사용합니다. DIO 와 동일한 컨테이너를 사용하므로 이름 규칙(AI_ / AO_ 접두)으로 구분하는 프로젝트가 많습니다.

AIO 사용 예

기본 예제

// 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() 호출 → 그 이후 측정값이 물리량으로 보정됨.
  • 보드 스펙을 초과하는 출력 전압 설정은 실제로 적용되지 않고 포화됨.