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() → 之后的测量值即按物理量校正。
  • 超出板卡规格的输出电压设置不会实际生效,而是被饱和钳位。